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

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

В Oracle Database, TZ_OFFSET() функцията връща изместването на часовата зона, съответстващо на аргумента, въз основа на датата, на която операторът е изпълнен.

Синтаксис

Синтаксисът е така:

TZ_OFFSET({ 'time_zone_name'
          | '{ + | - } hh : mi'
          | SESSIONTIMEZONE
          | DBTIMEZONE
          }
         )

Примери

Ето няколко примера за демонстрация.

Име на региона на часовата зона

Можете да подадете валидно име на региона на часовата зона:

SELECT TZ_OFFSET('Australia/Darwin')
FROM DUAL;

Резултат:

+09:30

Ето как да получите списък с поддържани часови зони във вашата система.

Изместване на часовата зона

Можете да подадете отместване на часовата зона, като в този случай то просто се връща:

SELECT TZ_OFFSET('-10:00')
FROM DUAL;

Резултат:

-10:00

SESSIONTIMEZONE Функция

SESSIONTIMEZONE функцията връща часовата зона на текущата сесия. Можете да използвате това, за да получите изместване на часовата зона на текущата си сесия.

Пример:

SELECT 
    SESSIONTIMEZONE,
    TZ_OFFSET(SESSIONTIMEZONE)
FROM DUAL;

Резултат в моята сесия:

      SESSIONTIMEZONE    TZ_OFFSET(SESSIONTIMEZONE) 
_____________________ _____________________________ 
Australia/Brisbane    +10:00                       

DBTIMEZONE Функция

DBTIMEZONE функцията връща часовата зона на базата данни. Това може или не може да е същото като SESSIONTIMEZONE на вашата система.

Пример:

SELECT 
    DBTIMEZONE,
    TZ_OFFSET(DBTIMEZONE)
FROM DUAL;

Резултат:

   DBTIMEZONE    TZ_OFFSET(DBTIMEZONE) 
_____________ ________________________ 
+00:00        +00:00                  

Нулеви аргументи

Предаването на null води до null :

SET NULL 'null';
SELECT TZ_OFFSET(null)
FROM DUAL;

Резултат:

null

По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Липсващ аргумент

Извикването на функцията с грешен брой аргументи или без предаване на аргументи води до грешка:

SELECT TZ_OFFSET()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT TZ_OFFSET()
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. скаларна подзаявка в израза if Условие в PL/SQL

  2. Ключова дума „CONTINUE“ в Oracle 10g PL/SQL

  3. Обработка на изключения за пакетно вмъкване на JDBC

  4. Каква е разликата между USER() и SYS_CONTEXT('USERENV','CURRENT_USER')?

  5. Получаване на изход от dbms_output.get_lines с помощта на JDBC