V databázi Oracle je to LOCALTIMESTAMP()
funkce vrací aktuální datum a čas v časovém pásmu relace v hodnotě datového typu TIMESTAMP
.
Je to podobné jako CURRENT_TIMESTAMP
, kromě CURRENT_TIMESTAMP
vrátí TIMESTAMP WITH TIME ZONE
hodnotu.
Syntaxe
Syntaxe vypadá takto:
LOCALTIMESTAMP [ (timestamp_precision) ]
Kde je volitelný parametr timestamp_precision
argument určuje zlomkovou sekundovou přesnost vrácené časové hodnoty.
Při volání funkce bez argumentu musí být závorky vynechány.
Příklad
Zde je příklad volání funkce bez určení přesnosti:
SELECT LOCALTIMESTAMP
FROM DUAL;
Výsledek:
07/AUG/21 08:49:50.026443000 AM
Tento příklad zobrazuje datum ve formátu založeném na hodnotě NLS_DATE_FORMAT
mého systému parametr (který je aktuálně DD/MON/RR
). Tento parametr odvozuje svou hodnotu z NLS_TERRITORY
parametr (z toho můj je AUSTRALIA
).
Máme možnost tyto parametry změnit (například viz Jak změnit formát data ve vaší Oracle Session).
Případně můžeme použít funkci jako TO_CHAR()
vrátit výsledek v jiném formátu.
Příklad:
SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Výsledek:
2021-08-07 08:50:20
Přesnost
Zde je příklad, který specifikuje přesnost. To určuje přesnost vrácené časové hodnoty ve zlomcích sekund.
SELECT LOCALTIMESTAMP(9)
FROM DUAL;
Výsledek:
07/AUG/21 08:50:47.203717000 AM
Všimněte si, že argument přesnosti musí být číslo mezi 0 a 9.
Co se stane, když předáme hodnotu mimo tento rozsah:
SELECT LOCALTIMESTAMP(10)
FROM DUAL;
Výsledek:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(10) FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Vynechání závorek bez zadání přesnosti
Jak již bylo zmíněno, při volání LOCALTIMESTAMP
bez předání precision
argument, musíte vynechat závorky.
Když zahrneme závorky bez určení přesnosti, stane se toto:
SELECT LOCALTIMESTAMP()
FROM DUAL;
Výsledek:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP() FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Dostaneme stejnou chybu jako v předchozím příkladu. Oracle Database hledá argument přesnosti mezi 0 a 9, ale žádný jsme neprošli.
Nulový argument
Ke stejné chybě dochází při předávání null
:
SELECT LOCALTIMESTAMP(null)
FROM DUAL;
Výsledek:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(null) FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.