Funcţiile dată şi oră utilizează datele pe baza DATE
şi DATETIME
.
Funcţie | Exemplu | Descriere | Sintaxă |
---|---|---|---|
CURRENT_Date |
|
Returnează data curentă. Data este determinată de sistemul pe care rulează Oracle BI. |
|
CURRENT_TIME |
|
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_TIMESTAMP |
|
Returnează data/marcajul temporal curent în numărul specificat de cifre de precizie. |
|
DAYNAME |
|
Returnează numele zilei din săptămână pt. o expresie de dată specificată. |
|
DAYOFMONTH |
|
Returnează numărul corespunzător zilei din lună pt. o expresie de dată specificată. |
|
DAYOFWEEK |
|
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. |
|
DAYOFYEAR |
|
Returnează numărul (cuprins între 1 şi 366) corespunzător zilei din an pt. o expresie de dată specificată. |
|
DAY_OF_QUARTER |
|
Returnează un număr (cuprins între 1 şi 92) corespunzător zilei din trimestru pt. expresia de dată specificată. |
|
HOUR |
|
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. |
|
MINUTE |
|
Returnează un număr (cuprins între 0 şi 59) corespunzător minutului pt. o expresie de oră specificată. |
|
MONTH |
|
Returnează numărul (cuprins între 1 şi 12) corespunzător lunii pt. o expresie de dată specificată. |
|
MONTHNAME |
|
Returnează numele lunii pt. o expresie de dată specificată. |
|
MONTH_OF_QUARTER |
|
Returnează numărul (cuprins între 1 şi 3) corespunzător lunii din trimestru pt. o expresie de dată specificată. |
|
NOW |
|
Returnează marcajul temporal curent. Funcţia |
|
QUARTER_OF_YEAR |
|
Returnează numărul (cuprins între 1 şi 4) corespunzător trimestrului din an pt. o expresie de dată specificată. |
|
SECOND |
|
Returnează numărul (cuprins între 0 şi 59) corespunzător secundelor pt. o expresie de oră specificată. |
|
TIMESTAMPADD |
|
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 |
|
TIMESTAMPDIFF |
|
Returnează numărul total de intervale specificate între două marcaje temporale. Utilizaţi aceleaşi intervale ca TIMESTAMPADD. |
|
WEEK_OF_QUARTER |
|
Returnează un număr (cuprins între 1 şi 13) corespunzător săptămânii din trimestru pt. expresia de dată specificată. |
|
WEEK_OF_YEAR |
|
Returnează un număr (cuprins între 1 şi 53) corespunzător săptămânii din an pt. expresia de dată specificată. |
|
YEAR |
|
Returnează anul pt. expresia de dată specificată. |
|
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ă:
Î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.
.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:
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
Note:
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ă.