V databázi Oracle je to SYS_EXTRACT_UTC()
Funkce extrahuje UTC (Coordinated Universal Time) z hodnoty datetime s posunem časového pásma nebo názvem regionu časového pásma.
Syntaxe
Syntaxe vypadá takto:
SYS_EXTRACT_UTC(datetime_with_timezone)
Příklad
Zde je příklad k demonstraci:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Výsledek:
25/AUG/35 06:30:45.123456789 AM
Výsledný formát závisí na hodnotě vašeho NLS_TIMESTAMP_FORMAT
parametr. Výchozí hodnota tohoto parametru je odvozena z NLS_TERRITORY
parametr. Změnou kteréhokoli z nich můžete změnit formát SYS_EXTRACT_UTC()
funkce pro vaši relaci.
Příklad:
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-MON-RRRR HH24:MI:SSXFF';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Výsledek:
25-AUG-2035 06:30:45.123456789
A takhle to vypadá, když nastavím NLS_TERRITORY
parametr na AMERICA
:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Výsledek:
25-AUG-35 06.30.45.123456789 AM
Změna tohoto parametru implicitně nastaví NLS_TIMESTAMP_FORMAT
do formátu pro AMERICA
.
Další informace a příklady naleznete v části Jak změnit formát data relace.
Název oblasti časového pásma
Místo posunu časového pásma můžete alternativně použít název oblasti časového pásma.
Příklad:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;
Výsledek:
25-AUG-35 03.30.45.123456789 AM
Výchozí časové pásmo
Pokud není zadáno časové pásmo, pak je datum a čas přidružen k časovému pásmu relace.
Příklad:
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;
Výsledek:
25-AUG-35 12.30.45.123456789 AM
Časové pásmo aktuální relace můžete zkontrolovat pomocí SESSIONTIMEZONE
funkce:
SELECT SESSIONTIMEZONE
FROM DUAL;
Výsledek:
Australia/Brisbane
Viz 4 způsoby, jak změnit časové pásmo v Oracle, kde najdete příklady změny.
Nulové argumenty
Předávání null
výsledkem je chyba:
SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;
Výsledek:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC(null) FROM DUAL Error at Command Line : 1 Column : 24 Error report - SQL Error: ORA-30175: invalid type given for an argument 30175. 00000 - "invalid type given for an argument" *Cause: There is an argument with an invalid type in the argument list. *Action: Use the correct type wrapper for the argument.
Chybí argument
Volání funkce s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů má za následek chybu:
SELECT SYS_EXTRACT_UTC()
FROM DUAL;
Výsledek:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: