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

Funkce CURRENT_TIMESTAMP() v Oracle

V databázi Oracle je to CURRENT_TIMESTAMP() funkce vrací aktuální datum a čas v časovém pásmu relace v hodnotě datového typu TIMESTAMP WITH TIME ZONE .

Je to podobné jako LOCALTIMESTAMP , kromě LOCALTIMESTAMP vrátí TIMESTAMP hodnotu.

Syntaxe

Syntaxe vypadá takto:

CURRENT_TIMESTAMP [ (precision) ]

Kde je volitelná 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 CURRENT_TIMESTAMP
FROM DUAL;

Výsledek:

06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE

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(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Výsledek:

2021-08-06 08:44:39

Přesnost

Zde je příklad, který specifikuje přesnost. Tento určuje přesnost vrácené časové hodnoty ve zlomcích sekund.

SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;

Výsledek:

06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE

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 CURRENT_TIMESTAMP(10)
FROM DUAL;

Výsledek:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 26
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í CURRENT_TIMESTAMP bez předání precision argument, musíte vynechat závorky.

Když zahrneme závorky bez určení přesnosti, stane se toto:

SELECT CURRENT_TIMESTAMP()
FROM DUAL;

Výsledek:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 26
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 CURRENT_TIMESTAMP(null)
FROM DUAL;

Výsledek:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 26
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. Oracle – Jaký soubor TNS Names používám?

  2. Jak náhodně nastavit text na tlačítka z SQLite bez opakování?

  3. Odstranění úvodních nul z vývojáře varchar sql

  4. Použití PostgreSQL Logical Replication k udržení vždy aktuálního testovacího serveru pro čtení/zápis