В Oracle Database, SYS_EXTRACT_UTC()
функцията извлича UTC (координирано универсално време) от стойност на дата и час с изместване на часовата зона или име на региона на часовата зона.
Синтаксис
Синтаксисът е така:
SYS_EXTRACT_UTC(datetime_with_timezone)
Пример
Ето пример за демонстрация:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Резултат:
25/AUG/35 06:30:45.123456789 AM
Полученият формат зависи от стойността на вашия NLS_TIMESTAMP_FORMAT
параметър. Стойността по подразбиране на този параметър се извлича от NLS_TERRITORY
параметър. Промяната на някое от тях може да промени формата на SYS_EXTRACT_UTC()
функция за вашата сесия.
Пример:
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;
Резултат:
25-AUG-2035 06:30:45.123456789
И ето как изглежда, когато задам NLS_TERRITORY
параметър към AMERICA
:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Резултат:
25-AUG-35 06.30.45.123456789 AM
Промяната на този параметър неявно задава NLS_TIMESTAMP_FORMAT
във формата за AMERICA
.
Вижте Как да промените формата на датата на вашата сесия за повече информация и примери.
Име на региона на часовата зона
Като алтернатива можете да използвате името на региона на часовата зона вместо изместването на часовата зона.
Пример:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;
Резултат:
25-AUG-35 03.30.45.123456789 AM
Часова зона по подразбиране
Ако часова зона не е посочена, тогава датата и часът се свързва с часовата зона на сесията.
Пример:
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;
Резултат:
25-AUG-35 12.30.45.123456789 AM
Можете да проверите часовата зона на текущата сесия с SESSIONTIMEZONE
функция:
SELECT SESSIONTIMEZONE
FROM DUAL;
Резултат:
Australia/Brisbane
Вижте 4 начина за промяна на часовата зона в Oracle за примери за промяна на това.
Нулеви аргументи
Предаването на null
води до грешка:
SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;
Резултат:
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.
Липсващ аргумент
Извикването на функцията с грешен брой аргументи или без предаване на аргументи води до грешка:
SELECT SYS_EXTRACT_UTC()
FROM DUAL;
Резултат:
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: