Dato- og klokkeslettfunksjoner brukes for å manipulere data basert på DATE
og DATETIME
.
Funksjon | Eksempel | Beskrivelse | Syntaks |
---|---|---|---|
CURRENT_Date |
|
Returnerer dagens dato. Datoen bestemmes av systemet som Oracle BI kjører på. |
|
CURRENT_TIME |
|
Returnerer det gjeldende klokkeslettet med en presisjon på det angitte antallet sifre, for eksempel TT:MM:SS.SSS Hvis ingen argumenter er angitt, returnerer funksjonen standardpresisjonen. |
|
CURRENT_TIMESTAMP |
|
Returnerer gjeldende dato/tidsstempel med en presisjon på det angitte antallet sifre. |
|
DAYNAME |
|
Returnerer navnet på dagen i uken for et angitt datouttrykk, |
|
DAYOFMONTH |
|
Returnerer tallet som tilsvarer dagen i måneden for et angitt datouttrykk. |
|
DAYOFWEEK |
|
Returnerer et tall mellom 1 og 7 som tilsvarer dagen i uken for et angitt datouttrykk. 1 tilsvarer for eksempel alltid søndag, 2 tilsvarer mandag og så videre til og med lørdag, som returnerer 7. |
|
DAYOFYEAR |
|
Returnerer tallet (mellom 1 og 366) som tilsvarer dagen i året for et angitt datouttrykk. |
|
DAY_OF_QUARTER |
|
Returnerer et tall (mellom 1 og 92) som tilsvarer dagen i kvartalet for det angitte datouttrykket. |
|
HOUR |
|
Returnerer et tall (mellom 0 og 23) som tilsvarer timen for et angitt klokkeslettuttrykk. 0 tilsvarer for eksempel 00.00, og 23 tilsvarer 23.00. |
|
MINUTE |
|
Returnerer et tall (mellom 0 og 59) som tilsvarer minuttet for et angitt klokkeslettuttrykk. |
|
MONTH |
|
Returnerer tallet (mellom 1 og 12) som tilsvarer måneden for et angitt datouttrykk. |
|
MONTHNAME |
|
Returnerer navnet på måneden for et angitt datouttrykk. |
|
MONTH_OF_QUARTER |
|
Returnerer tallet (mellom 1 og 3) som tilsvarer måneden i kvartalet for et angitt datouttrykk. |
|
NOW |
|
Returnerer det gjeldende tidsstempelet. Funksjonen |
|
QUARTER_OF_YEAR |
|
Returnerer tallet (mellom 1 og 4) som tilsvarer kvartalet i året for et angitt datouttrykk. |
|
SECOND |
|
Returnerer tallet (mellom 0 og 59) som tilsvarer sekundene for et angitt klokkeslettuttrykk. |
|
TIMESTAMPADD |
|
Legger til et angitt antall intervaller i et tidsstempel, og returnerer et enkelt tidsstempel. Intervallvalgene er: 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 |
|
Returnerer det totale antallet angitte intervaller mellom to tidsstempler. Bruk samme intervaller som TIMESTAMPADD. |
|
WEEK_OF_QUARTER |
|
Returnerer et tall (mellom 1 og 13) som tilsvarer uken i kvartalet for et angitt datouttrykk. |
|
WEEK_OF_YEAR |
|
Returnerer et tall (mellom 1 og 53) som tilsvarer uken i året for et angitt datouttrykk. |
|
YEAR |
|
Returnerer året for et angitt datouttrykk. |
|
Her er noen tips om hvordan du oppnår best mulig resultater når du bruker datofunksjoner i arbeidsbøkene til å beregne regnskapsperioder, konvertere strenger til datoer, vise en dato og et klokkeslett i en bestemt tidssone samt beregne forskjeller over tid.
Beregne regnskapsår, -kvartal og -måned:
Emneområder har vanligvis en tidsdimensjon, slik at du kan bruke de forhåndskonfigurerte periodene, for eksempel regnskapskvartal, regnskapsmåned og regnskapsuke. Hvis du bare har et datofelt, kan du beregne disse periodene selv ved hjelp av datofunksjoner.
Dette eksemplet beregner regnskapskvartal:
'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)
Dette eksemplet beregner regnskapsår og -måned:
'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||cast(MONTHNAME(<same date field>) as char)
Merknader:
||
sammenkjeder verdier.cast (xxx(date) as char)
trekker ut en del av et datofelt.TIMESTAMPADD
legger til (eller trekker fra) perioder for en dato. Dette eksemplet bruker parameterverdien SQL_TSI_MONTH til å legge til måneder.Beregningen ovenfor fungerer godt i tabeller, men når den brukes i filtre, kan avstanden mellom returnerte verdier se merkelig ut. I så fall kan du bruke en ryddigere, men mer kompleks beregning basert på disse eksemplene:
'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')
Konvertere en streng til en dato:
I tekstboksen der navnet på kolonnen din står oppført med blått, setter du inn To_DateTime(
før kolonnenavnet. Deretter legger du til datoformatet du vil bruke, etter kolonnenavnet, etterfulgt av )
. Klikk deretter på Legg til trinn.
.png
Når du bruker valget Rediger til å opprette funksjonen for datokonvertering, kan du også bruke Allow_Variable_Digits
til å behandle kolonneverdier med tall som består av ett eller to sifre, og argumenter for Null_On_Error
til å forkaste rader som ikke samsvarer med det nødvendige mønsteret. Se også REPLACE og CAST for alternative måter å behandle data som ikke samsvarer med det nødvendige mønsteret, på.
I stedet for å bruke To_DateTime()
kan du bruke CAST() til å endre datatypen for en verdi. Eksempel: CAST(SalesDate AS DATE)
.
Bruk i tillegg valget Erstatt. Gå til kolonnen du vil konvertere, i dataruten i arbeidsbokutformeren, høyreklikk, og velg deretter Erstatt. Konfigurer erstatningstypen du vil bruke, og klikk deretter på Legg til trinn.
Vise et felt for dato og klokkeslett i en bestemt tidssone:
Bruk funksjonen NEW_TIME i databasen sammen med EVALUATE. Eksempel:
evaluate ('new_time(%1,%2,%3)' as char, "DV - Pipeline and Forecast"."Opportunity"."Last Updated Date",'GMT','AST')
Kontroller at datofeltet inneholder tidskomponenten.
Beregne forskjeller over tid:
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
Merknader:
SQL_TSI_DAY
. Du kan imidlertid velge å bruke WEEK og MONTH uke for uke og måned for måned.