Funcţii dată şi oră

Funcţiile dată şi oră utilizează datele pe baza DATE şi DATETIME.

Funcţie Exemplu Descriere Sintaxă

CURRENT_Date

CURRENT_DATE

Returnează data curentă.

Data este determinată de sistemul pe care rulează Oracle BI.

CURRENT_DATE

CURRENT_TIME

CURRENT_TIME(3)

Returnează ora curentă în numărul specificat de cifre de precizie, de exemplu: HH:MM:SS.SSS

Dacă nu este specificat niciun argument, funcţia returnează precizia prestabilită.

CURRENT_TIME(expr)

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP(3)

Returnează data/marcajul temporal curent în numărul specificat de cifre de precizie.

CURRENT_TIMESTAMP(expr)

DAYNAME

DAYNAME(Order_Date)

Returnează numele zilei din săptămână pt. o expresie de dată specificată.

DAYNAME(expr)

DAYOFMONTH

DAYOFMONTH(Order_Date)

Returnează numărul corespunzător zilei din lună pt. o expresie de dată specificată.

DAYOFMONTH(expr)

DAYOFWEEK

DAYOFWEEK(Order_Date)

Returnează un număr cuprins între 1 şi 7, corespunzător zilei din săptămână pt. o expresie de dată specificată. De exemplu, 1 corespunde întotdeauna zilei de duminică, 2 corespunde zilei de luni etc. până la sâmbătă, care returnează 7.

DAYOFWEEK(expr)

DAYOFYEAR

DAYOFYEAR(Order_Date)

Returnează numărul (cuprins între 1 şi 366) corespunzător zilei din an pt. o expresie de dată specificată.

DAYOFYEAR(expr)

DAY_OF_QUARTER

DAY_OF_QUARTER(Order_Date)

Returnează un număr (cuprins între 1 şi 92) corespunzător zilei din trimestru pt. expresia de dată specificată.

DAY_OF_QUARTER(expr)

HOUR

HOUR(Order_Time)

Returnează un număr (cuprins între 0 şi 23) corespunzător orei pt. o expresie de oră specificată. De exemplu, 0 corespunde orei 12 A.M., iar 23 corespunde orei 11 P.M.

HOUR(expr)

MINUTE

MINUTE(Order_Time)

Returnează un număr (cuprins între 0 şi 59) corespunzător minutului pt. o expresie de oră specificată.

MINUTE(expr)

MONTH

MONTH(Order_Time)

Returnează numărul (cuprins între 1 şi 12) corespunzător lunii pt. o expresie de dată specificată.

MONTH(expr)

MONTHNAME

MONTHNAME(Order_Time)

Returnează numele lunii pt. o expresie de dată specificată.

MONTHNAME(expr)

MONTH_OF_QUARTER

MONTH_OF_QUARTER(Order_Date)

Returnează numărul (cuprins între 1 şi 3) corespunzător lunii din trimestru pt. o expresie de dată specificată.

MONTH_OF_QUARTER(expr)

NOW

NOW()

Returnează marcajul temporal curent. Funcţia NOW este echivalentul funcţiei CURRENT_TIMESTAMP.

NOW()

QUARTER_OF_YEAR

QUARTER_OF_YEAR(Order_Date)

Returnează numărul (cuprins între 1 şi 4) corespunzător trimestrului din an pt. o expresie de dată specificată.

QUARTER_OF_YEAR(expr)

SECOND

SECOND(Order_Time)

Returnează numărul (cuprins între 0 şi 59) corespunzător secundelor pt. o expresie de oră specificată.

SECOND(expr)

TIMESTAMPADD

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

Adaugă un număr specificat de intervale la un marcaj temporal şi returnează un singur marcaj temporal.

Opţiunile intervalului sunt: 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)

Returnează numărul total de intervale specificate între două marcaje temporale.

Utilizaţi aceleaşi intervale ca TIMESTAMPADD.

TIMESTAMPDIFF(interval, expr, timestamp2)

WEEK_OF_QUARTER

WEEK_OF_QUARTER(Order_Date)

Returnează un număr (cuprins între 1 şi 13) corespunzător săptămânii din trimestru pt. expresia de dată specificată.

WEEK_OF_QUARTER(expr)

WEEK_OF_YEAR

WEEK_OF_YEAR(Order_Date)

Returnează un număr (cuprins între 1 şi 53) corespunzător săptămânii din an pt. expresia de dată specificată.

WEEK_OF_YEAR(expr)

YEAR

YEAR(Order_Date)

Returnează anul pt. expresia de dată specificată.

YEAR(expr)

Sugestii pentru utilizarea funcţiilor pentru dată

Iată câteva sugestii pentru obţinerea celor mai bune rezultate la utilizarea funcţiilor pentru dată în registrele dvs. de lucru pentru a calcula perioadele fiscale, converti şirurile în date, afişa o dată şi o oră pe un anumit fus orar şi a calcula diferenţele în timp.

Calcularea anului, trimestrului şi lunii fiscale:

De obicei, zonele de subiect au o dimensiune Timp, pentru a putea utiliza perioadele pre-configurate, precum trimestrul fiscal, luna fiscală şi săptămâna fiscală. Dacă aveţi doar un câmp de dată, puteţi calcula dvs. aceste perioade utilizând funcţiile pentru dată.

Acest exemplu calculează trimestrul fiscal:

'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)

Acest exemplu calculează anul şi luna fiscală:

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

Note:

  • || concatenează valorile.
  • cast (xxx(date) as char) extrage o porţiune dintr-un câmp de dată.
  • TIMESTAMPADD adună (sau scade) perioadele dintr-o dată. Acest exemplu utilizează valoarea parametrului SQL_TSI_MONTH pentru a aduna luni.

Calculele de mai sus funcţionează bine în tabele, dar când sunt utilizate în filtre, spaţiile dintre valorile returnate pot să arate bizar. În acest caz, utilizaţi un calcul mai curat dar mai complex, pe baza acestor exemple:

'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')

Convertirea unui şir într-o dată:

Oracle Analytics profilează datele şi oferă recomandări de standardizare pentru extragerea şi convertirea datelor. Dacă trebuie să convertiţi dvs. un şir în dată, utilizaţi aceste sugestii.
  • În designerul de registre de lucru, navigaţi în panoul Date la coloana pe care doriţi s-o convertiţi, apoi faceţi clic dreapta şi selectaţi Conversie în dată. Configuraţi data şi apoi faceţi clic pe Adăugare pas.

  • În designerul de registre de lucru, navigaţi în panoul Date la coloana pe care doriţi s-o convertiţi, apoi faceţi clic dreapta şi selectaţi Editare. Configuraţi data şi apoi faceţi clic pe Adăugare pas.

    În caseta de text care conţine numele coloanei cu albastru, inseraţi To_DateTime( înainte de numele coloanei, apoi adăugaţi formatul datei pe care doriţi să-l utilizaţi după numele coloanei, urmat de ), apoi faceţi clic pe Adăugare pas.
    Urmează descrierea GUID-ADBD035B-A62A-4DED-8768-553365BAABFE-default.png
    .png

    Când utilizaţi opţiunea Editare pentru a crea funcţia date-conversion, puteţi utiliza şi Allow_Variable_Digits pentru a procesa valorile coloanelor cu numere cu una sau două cifre şi argumente Null_On_Error pentru a abandona rândurile care nu corespund tiparelor obligatorii. Consultaţi şi REPLACE şi CAST pentru moduri alternative de a procesa datele care nu corespund tiparului obligatoriu.

    Ca alternativă la utilizarea To_DateTime(), utilizaţi CAST() pentru a schimba tipul datelor unei valori. De exemplu, CAST(SalesDate AS DATE).

    În plus, utilizaţi opţiunea Înlocuire. În designerul de registre de lucru, navigaţi în panoul Date la coloana pe care doriţi s-o convertiţi, apoi faceţi clic dreapta şi selectaţi Înlocuire. Configuraţi tipul înlocuirii dorite şi apoi faceţi clic pe Adăugare pas.

Afişaţi un câmp pentru dată şi oră într-un anumit fus orar:

Utilizaţi funcţia NEW_TIME în baza de date în combinaţie cu EVALUATE. De exemplu:

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

Asiguraţi-vă că câmpul de dată include componenta pentru oră.

Calcularea diferenţei în timp:

Pentru a afişa diferenţa ca număr şi procentaj între acum şi ieri, creaţi calcule bazate pe aceste exemple:
  • Calculaţi un subindicator până ieri: filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Calculaţi diferenţa: Measure - filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Calculaţi procentajul diferenţă: 1-(filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))/Measure display as percentage

Note:

  • Aceste exemple utilizează SQL_TSI_DAY, dar ca alternativă, puteţi utiliza WEEK şi MONTH săptămână de săptămână şi lună de lună.
  • Aceste exemple funcţionează cu un calendar normal sau natural. Dacă aveţi nevoie de luni sau trimestre fiscale, utilizaţi variabile din repository în calculele dvs. în loc de TIMESTAMPADD. Sau combinaţi acest element cu sugestia pentru Calcularea anului, trimestrului şi lunii fiscale.
  • Unele zone de subiect includ subindicatori X anterior pre-calculaţi, precum PY (anul anterior) sau PQ (trimestrul anterior), pe care îi puteţi utiliza pentru a calcula diferenţele în timp.
  • Sau puteţi utiliza funcţiile TIME SERIES: AGO, PERIODROLLING şi TODATE. Consultaţi Funcţii pentru serii cronologice.