Funkcje daty i godziny operują na danych typu DATE
i DATETIME
.
Funkcja | Przykład | Opis | Składnia |
---|---|---|---|
CURRENT_Date |
|
Zwraca bieżącą datę. Data jest ustalana przez system, w którym działa Oracle BI. |
|
CURRENT_TIME |
|
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_TIMESTAMP |
|
Zwraca bieżący znacznik czasu z określoną liczbą miejsc po przecinku. |
|
DAYNAME |
|
Zwraca nazwę dnia tygodnia dla podanego wyrażenia typu daty. |
|
DAYOFMONTH |
|
Zwraca liczbę odpowiadającą numerowi dnia miesiąca dla podanego wyrażenia typu daty. |
|
DAYOFWEEK |
|
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. |
|
DAYOFYEAR |
|
Zwraca liczbę od 1 do 366 odpowiadającą numerowi dnia roku dla podanego wyrażenia typu daty. |
|
DAY_OF_QUARTER |
|
Zwraca liczbę od 1 do 92 odpowiadającą numerowi dnia kwartału dla podanego wyrażenia typu daty. |
|
HOUR |
|
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. |
|
MINUTE |
|
Zwraca liczbę od 0 do 59 odpowiadającą minucie dla podanego wyrażenia typu godziny. |
|
MONTH |
|
Zwraca liczbę od 1 do 12 odpowiadającą numerowi miesiąca dla podanego wyrażenia typu daty. |
|
MONTHNAME |
|
Zwraca nazwę miesiąca dla podanego wyrażenia typu daty. |
|
MONTH_OF_QUARTER |
|
Zwraca liczbę od 1 do 3 odpowiadającą numerowi miesiąca kwartału dla podanego wyrażenia typu daty. |
|
NOW |
|
Zwraca bieżący znacznik czasu. Funkcja |
|
QUARTER_OF_YEAR |
|
Zwraca liczbę od 1 do 4 odpowiadającą numerowi kwartału roku dla podanego wyrażenia typu daty. |
|
SECOND |
|
Zwraca liczbę od 0 do 59 odpowiadającą sekundzie dla podanego wyrażenia typu godziny. |
|
TIMESTAMPADD |
|
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 |
|
TIMESTAMPDIFF |
|
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. |
|
WEEK_OF_QUARTER |
|
Zwraca liczbę od 1 do 13 odpowiadającą numerowi tygodnia kwartału dla podanego wyrażenia typu daty. |
|
WEEK_OF_YEAR |
|
Zwraca liczbę od 1 do 53 odpowiadającą numerowi tygodnia roku dla podanego wyrażenia typu daty. |
|
YEAR |
|
Zwraca rok dla podanego wyrażenia typu 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ę:
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.
.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:
filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
Measure - filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
1-(filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))/Measure display as percentage
Uwagi:
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".