sql >> Databáze >  >> RDS >> Oracle

Funkce LOCALTIMESTAMP() v Oracle

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.

  1. Integrace PostgreSQL s autentizačními systémy

  2. Jak spojíte dvě tabulky v poli cizího klíče pomocí django ORM?

  3. Je možné vynutit kontrolu dat v MySQL pomocí regulárního výrazu

  4. Uložit pole PHP do MySQL?