Oracle
 sql >> база данни >  >> RDS >> Oracle

SYS_EXTRACT_UTC() Функция в Oracle

В 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сравнете низове, игнориращи акценти в SQL (ORACLE)

  2. Инструкция INSERT в Oracle

  3. Oracle DB Server + APEX + ORDS + JasperReports от нулата (част 1)

  4. Справяне с грешката в Drop Column в Oracle 18c и 19c

  5. Ако изявление в рамките на клауза Къде