Funktioner för datum och tid används för att manipulera data baserat på DATE
och DATETIME
.
Funktion | Exempel | Beskrivning | Syntax |
---|---|---|---|
CURRENT_Date |
|
Returnerar aktuellt datum. Datumet fastställs av det system där Oracle BI körs. |
|
CURRENT_TIME |
|
Returnerar aktuell tid med angivet antal precisionssiffror, till exempel: HH:MM:SS,SSS Om inget argument är angivet returnerar funktionen standardprecisionsvärdet. |
|
CURRENT_TIMESTAMP |
|
Returnerar aktuellt datum/tidsstämpel med angivet antal precisionssiffror. |
|
DAYNAME |
|
Returnerar namnet på veckodagen för ett angivet datumuttryck. |
|
DAYOFMONTH |
|
Returnerar det nummer som motsvarar dagen i månaden för ett angivet datumuttryck. |
|
DAYOFWEEK |
|
Returnerar ett nummer mellan 1 och 7 som motsvarar dagen i veckan för ett angivet datumuttryck. Till exempel motsvarar 1 alltid söndag, 2 motsvarar måndag osv. till lördag som returnerar 7. |
|
DAYOFYEAR |
|
Returnerar det nummer (mellan 1 och 366) som motsvarar dagen på året för ett angivet datumuttryck. |
|
DAY_OF_QUARTER |
|
Returnerar ett nummer (mellan 1 och 92) som motsvarar dagen i kvartalet för det angivna datumuttrycket. |
|
HOUR |
|
Returnerar ett nummer (mellan 0 och 23) som motsvarar timdelen för ett angivet tidsuttryck. Till exempel motsvarar 0 klockan 12 på natten och 23 motsvarar klockan 23.00. |
|
MINUTE |
|
Returnerar ett nummer (mellan 0 och 59) som motsvarar minutdelen för ett angivet tidsuttryck. |
|
MONTH |
|
Returnerar det nummer (mellan 1 och 12) som motsvarar månaden för ett angivet datumuttryck. |
|
MONTHNAME |
|
Returnerar namnet på månaden för ett angivet datumuttryck. |
|
MONTH_OF_QUARTER |
|
Returnerar det nummer (mellan 1 och 3) som motsvarar månaden i kvartalet för ett angivet datumuttryck. |
|
NOW |
|
Returnerar aktuell tidsstämpel. Funktionen |
|
QUARTER_OF_YEAR |
|
Returnerar det nummer (mellan 1 och 4) som motsvarar kvartalet på året för ett angivet datumuttryck. |
|
SECOND |
|
Returnerar det nummer (mellan 0 och 59) som motsvarar sekunddelen för ett angivet tidsuttryck. |
|
TIMESTAMPADD |
|
Adderar ett angivet antal intervall till en tidsstämpel och returnerar en enda tidsstämpel. Alternativen för intervall är: 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 |
|
Returnerar det totala antalet givna intervall mellan två tidsstämplar. Använd samma intervall som TIMESTAMPADD. |
|
WEEK_OF_QUARTER |
|
Returnerar ett nummer (mellan 1 och 13) som motsvarar veckan i kvartalet för det angivna datumuttrycket. |
|
WEEK_OF_YEAR |
|
Returnerar ett nummer (mellan 1 och 53) som motsvarar veckan på året för det angivna datumuttrycket. |
|
YEAR |
|
Returnerar året för det angivna datumuttrycket. |
|
Här följer några tips på hur du får bästa resultat när du använder datumfunktioner i dina arbetsböcker för att beräkna räkenskapsperioder, konvertera strängar till datum, visa datum och tid i en specifik tidszon och beräkna differenser med tiden.
Beräkna räkenskapsår, räkenskapsmånad och räkenskapskvartal:
Ämnesområden har vanligen en tidsdimension så att du kan använda förkonfigurerade perioder för till exempel räkenskapskvartal, räkenskapsmånad och räkenskapsvecka. Om du bara har ett datumfält kan du beräkna dessa perioder själv med hjälp av datumfunktioner.
I det här exemplet beräknas räkenskapskvartal:
'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)
I det här exemplet beräknas räkenskapsår och räkenskapsmånad:
'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||cast(MONTHNAME(<same date field>) as char)
Obs!
||
sammanfogar värden.cast (xxx(date) as char)
extraherar en del av ett datumfält.TIMESTAMPADD
lägger till (eller drar ifrån) perioder från ett datum. I det här exemplet används parametervärdet SQL_TSI_MONTH till att lägga till månader.De ovanstående beräkningarna fungerar bra i tabeller, men när de används i filter kan mellanrummen mellan de returnerade värdena se märkliga ut. I så fall kan du använda en renare, men mer komplex beräkning baserad på dessa exempel:
'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')
Konvertera en sträng till ett datum:
I textrutan som innehåller namnet på kolumnen i blått infogar du To_DateTime(
före kolumnnamnet och lägger till det datumformat du vill använda efter kolumnnamnet följt av )
. Klicka sedan på Lägg till steg.
.png
När du använder alternativet Redigera för att skapa funktionen för datumkonvertering kan du även använda Allow_Variable_Digits
för att bearbeta kolumnvärden med ensiffriga eller tvåsiffriga tal och Null_On_Error
-argument för att ignorera rader som inte matchar mönstret som krävs. Se även REPLACE och CAST för alternativa sätt att bearbeta data som inte matcher det mönster som krävs.
Ett alternativ till att använda To_DateTime()
är att använda CAST() för att ändra ett värdes datatyp. Exempel: CAST(SalesDate AS DATE)
.
Du kan även använda alternativet Ersätt. I arbetsboksdesignern navigerar du i datarutan till den kolumn du vill konvertera, högerklickar och väljer Ersätt. Konfigurera den typ av ersättning du vill ha och klicka på Lägg till steg.
Visa ett fält för datum och tid i en specifik tidszon:
Använd funktionen NEW_TIME i databasen ihop med EVALUATE. Exempel:
evaluate ('new_time(%1,%2,%3)' as char, "DV - Pipeline and Forecast"."Opportunity"."Last Updated Date",'GMT','AST')
Kontrollera att tidskomponenten finns i datumfältet.
Beräkna differens med tiden:
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
Obs!
SQL_TSI_DAY
, men du kan även använda WEEK och MONTH för på veckobasis och på månadsbasis.