Funkcje daty i godziny

Funkcje daty i godziny operują na danych typu DATE i DATETIME.

Funkcja Przykład Opis Składnia

CURRENT_Date

CURRENT_DATE

Zwraca bieżącą datę.

Data jest ustalana przez system, w którym działa Oracle BI.

CURRENT_DATE

CURRENT_TIME

CURRENT_TIME(3)

Zwraca bieżącą godzinę z określoną liczbą miejsc po przecinku, na przykład: HH:MM:SS.SSS

Jeśli nie podano argumentu, funkcja stosuje ustawienie domyślne.

CURRENT_TIME(expr)

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP(3)

Zwraca bieżący znacznik czasu z określoną liczbą miejsc po przecinku.

CURRENT_TIMESTAMP(expr)

DAYNAME

DAYNAME(Order_Date)

Zwraca nazwę dnia tygodnia dla podanego wyrażenia typu daty.

DAYNAME(expr)

DAYOFMONTH

DAYOFMONTH(Order_Date)

Zwraca liczbę odpowiadającą numerowi dnia miesiąca dla podanego wyrażenia typu daty.

DAYOFMONTH(expr)

DAYOFWEEK

DAYOFWEEK(Order_Date)

Zwraca liczbę od 1 do 7 odpowiadającą numerowi dnia tygodnia dla podanego wyrażenia typu daty. Na przykład liczba 1 zawsze odpowiada niedzieli, 2 - poniedziałkowi itd. aż do liczby 7 odpowiadającej sobocie.

DAYOFWEEK(expr)

DAYOFYEAR

DAYOFYEAR(Order_Date)

Zwraca liczbę od 1 do 366 odpowiadającą numerowi dnia roku dla podanego wyrażenia typu daty.

DAYOFYEAR(expr)

DAY_OF_QUARTER

DAY_OF_QUARTER(Order_Date)

Zwraca liczbę od 1 do 92 odpowiadającą numerowi dnia kwartału dla podanego wyrażenia typu daty.

DAY_OF_QUARTER(expr)

HOUR

HOUR(Order_Time)

Zwraca liczbę od 0 do 23 odpowiadającą godzinie dla podanego wyrażenia typu godziny. Na przykład 0 odpowiada północy, a 23 - godzinie 11 w nocy.

HOUR(expr)

MINUTE

MINUTE(Order_Time)

Zwraca liczbę od 0 do 59 odpowiadającą minucie dla podanego wyrażenia typu godziny.

MINUTE(expr)

MONTH

MONTH(Order_Time)

Zwraca liczbę od 1 do 12 odpowiadającą numerowi miesiąca dla podanego wyrażenia typu daty.

MONTH(expr)

MONTHNAME

MONTHNAME(Order_Time)

Zwraca nazwę miesiąca dla podanego wyrażenia typu daty.

MONTHNAME(expr)

MONTH_OF_QUARTER

MONTH_OF_QUARTER(Order_Date)

Zwraca liczbę od 1 do 3 odpowiadającą numerowi miesiąca kwartału dla podanego wyrażenia typu daty.

MONTH_OF_QUARTER(expr)

NOW

NOW()

Zwraca bieżący znacznik czasu. Funkcja NOW jest odpowiednikiem funkcji CURRENT_TIMESTAMP.

NOW()

QUARTER_OF_YEAR

QUARTER_OF_YEAR(Order_Date)

Zwraca liczbę od 1 do 4 odpowiadającą numerowi kwartału roku dla podanego wyrażenia typu daty.

QUARTER_OF_YEAR(expr)

SECOND

SECOND(Order_Time)

Zwraca liczbę od 0 do 59 odpowiadającą sekundzie dla podanego wyrażenia typu godziny.

SECOND(expr)

TIMESTAMPADD

TIMESTAMPADD(SQL_TSI_MONTH, 12,Time."Order Date")

Dodaje określoną liczbę okresów (interwałów) do podanego znacznika czasu i zwraca jeden znacznik czasu.

Dostępne opcje interwału: SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_YEAR

TIMESTAMPADD(interval, expr, timestamp)

TIMESTAMPDIFF

TIMESTAMPDIFF(SQL_TSI_MONTH, Time."Order Date",CURRENT_DATE)

Zwraca łączną liczbę określonych interwałów występujących między dwoma znacznikami czasu.

Używa tych samych opcji interwału co funkcja TIMESTAMPADD.

TIMESTAMPDIFF(interval, expr, timestamp2)

WEEK_OF_QUARTER

WEEK_OF_QUARTER(Order_Date)

Zwraca liczbę od 1 do 13 odpowiadającą numerowi tygodnia kwartału dla podanego wyrażenia typu daty.

WEEK_OF_QUARTER(expr)

WEEK_OF_YEAR

WEEK_OF_YEAR(Order_Date)

Zwraca liczbę od 1 do 53 odpowiadającą numerowi tygodnia roku dla podanego wyrażenia typu daty.

WEEK_OF_YEAR(expr)

YEAR

YEAR(Order_Date)

Zwraca rok dla podanego wyrażenia typu daty.

YEAR(expr)

Wskazówki dotyczące używania funkcji daty

W tym temacie przedstawiono kilka wskazówek, dzięki którym można uzyskać najlepsze wyniki podczas używania funkcji daty w skoroszytach w celu obliczania okresów obrotowych, przekształcania napisów w daty, wyświetlania daty i godziny w określonej strefie czasowej oraz obliczania różnic w czasie.

Obliczanie roku, kwartału i miesiąca obrotowego:

Obszary tematyczne zazwyczaj mają wymiar "czas", dzięki czemu można używać wstępnie skonfigurowanych okresów, takich jak kwartał obrotowy, miesiąc obrotowy i tydzień obrotowy. Jeśli jest dostępne pole daty, można samodzielnie obliczyć te okresy, używając funkcji daty.

W tym przykładzie jest obliczany kwartał obrotowy:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||'Q'||cast(QUARTER(TIMESTAMPADD(SQL_TSI_MONTH, 7,<same date field>)) as char)

W tym przykładzie jest obliczany rok i miesiąc obrotowy:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||cast(MONTHNAME(<same date field>) as char)

Uwagi:

  • || służy do łączenia wartości.
  • cast (xxx(date) as char) służy do wyodrębniania części pola daty.
  • TIMESTAMPADD służy do dodawania okresów do daty lub ich odejmowania. W tym przykładzie wartość parametru SQL_TSI_MONTH jest używana w celu dodawania miesięcy.

Powyższe obliczenia działają dobrze w tabelach, ale gdy są używane w filtrach, odstępy między zwracanymi wartościami mogą wyglądać dziwnie. W takim przypadku można użyć bardziej przejrzystego, ale jednocześnie bardziej złożonego obliczenia opartego na tych przykładach:

'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-Q'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<same date field>,7)),'Q')
'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-'||evaluate ('to_char(%1,%2)'as char,<same date field>,'MON')

Przekształcanie napisu w datę:

Oracle Analytics profiluje dane i dostarcza rekomendacji dotyczących wzbogaceń na potrzeby wyodrębniania i przekształcania dat. Aby samodzielnie przekształcić napis w datę, należy skorzystać z poniższych wskazówek.
  • W projektancie skoroszytów w okienku danych przejść do kolumny, która ma zostać przekształcona, a następnie kliknąć prawym przyciskiem myszy i wybrać Przekształć w datę. Skonfigurować datę i kliknąć Dodaj etap.

  • W projektancie skoroszytów w okienku danych przejść do kolumny, która ma zostać przekształcona, a następnie kliknąć prawym przyciskiem myszy i wybrać Edytuj. Skonfigurować datę i kliknąć Dodaj etap.

    W polu tekstowym zawierającym nazwę kolumny w kolorze niebieskim wstawić funkcję To_DateTime( przed nazwą kolumny, po nazwie kolumny dodać format daty, który ma być używany, a potem znak ). Następnie kliknąć Dodaj etap.
    Opis "GUID-ADBD035B-A62A-4DED-8768-553365BAABFE-default.png" znajduje się poniżej
    .png"

    Podczas używania opcji "Edytuj" w celu utworzenia funkcji przekształcania daty można też użyć argumentu Allow_Variable_Digits w celu przetwarzania wartości kolumn zawierających jedno- i dwucyfrowe liczby oraz argumentu Null_On_Error w celu odrzucania wierszy, które nie są zgodne z wymaganym wzorcem. Alternatywne sposoby przetwarzania danych, które nie pasują do wymaganego wzorca, można znaleźć w opisach funkcji REPLACE i CAST.

    W celu zmiany typu danych wartości można użyć funkcji "CAST()" zamiast funkcji To_DateTime(). Na przykład: CAST(SalesDate AS DATE).

    Można też użyć opcji Zastąp. W projektancie skoroszytów w okienku danych przejść do kolumny, która ma zostać przekształcona, a następnie kliknąć prawym przyciskiem myszy i wybrać Zastąp. Skonfigurować odpowiedni typ zastąpienia, a następnie kliknąć Dodaj etap.

Wyświetlanie pola daty i godziny w określonej strefie czasowej:

W bazie danych można użyć funkcji NEW_TIME w połączeniu z funkcją EVALUATE. Na przykład:

evaluate ('new_time(%1,%2,%3)' as char, "DV - Pipeline and Forecast"."Opportunity"."Last Updated Date",'GMT','AST')

Należy upewnić się, że pole daty zawiera składnik godziny.

Obliczanie różnicy w czasie:

Aby pokazać liczbową i procentową różnicę między chwilą obecną a dniem wczorajszym, należy utworzyć obliczenia na podstawie tych przykładów:
  • Obliczanie miary do wczoraj: filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Obliczanie różnicy: Measure - filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Obliczanie różnicy procentowej: 1-(filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))/Measure display as percentage

Uwagi:

  • W tych przykładach jest używana funkcja SQL_TSI_DAY, ale alternatywnie można użyć funkcji WEEK i MONTH na potrzeby obliczeń typu "tydzień do tygodnia" i "miesiąc do miesiąca".
  • Przykłady te działają z normalnym (naturalnym) kalendarzem. Jeśli potrzebne są miesiące i kwartały obrotowe, należy użyć w obliczeniach zmiennych repozytoryjnych, a nie funkcji TIMESTAMPADD. Alternatywnie tej wskazówki można użyć w połączeniu ze wskazówką Obliczanie roku, kwartału i miesiąca obrotowego.
  • Niektóre obszary tematyczne zawierają wstępnie obliczone miary typu "Poprzednie X", takie jak PY (poprzedni rok) i PQ (poprzedni kwartał), których można używać w celu obliczania różnic w czasie.
  • Można też użyć funkcji TIME SERIES: AGO, PERIODROLLING i TODATE. Zob. Funkcje ciągów czasowych.