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

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

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

Синтаксис

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

NEW_TIME(date, timezone1, timezone2)

И така, функцията връща датата и часа в часовата зона timezone2 когато датата и часът са в часова зона timezone1 са date .

Имайте предвид, че преди да използвате тази функция, ще трябва да зададете NLS_DATE_FORMAT параметър за показване на 24-часово време.

Аргументите timezone1 и timezone2 може да бъде всеки от тези текстови низове:

AST или ADT Атлантическо стандартно или лятно време
BST или BDT Стандартно или лятно часово време на Беринг
CST или CDT Централно стандартно или лятно време
EST или EDT Източно стандартно или лятно време
GMT Средно време по Гринуич
HST или HDT Стандартно или лятно време Аляска-Хавай
MST или MDT Стандартно планинско или лятно време
NST Стандартно време в Нюфаундленд
PST или PDT Тихоокеанско стандартно или лятно време
YST или YDT Стандартно или лятно време на Юкон

Пример

Ето един пример:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

SELECT
    NEW_TIME(
        TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 
        'AST', 
        'PST'
        )
FROM DUAL;

Резултат:

2030-03-01 08:30:45

Както споменахме, когато използвате тази функция NLS_DATE_FORMAT параметърът трябва да бъде настроен да показва 24-часово време, така че това прави първият ред в горния пример. Можете да пропуснете този ред, ако сесията ви е NLS_DATE_FORMAT параметърът вече използва 24-часово време. Вижте Как да зададете формата на датата на вашата сесия за още примери за настройка на формата на датата за текущата сесия.

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

Ако някой аргумент е null , резултатът е null :

SET NULL 'null';

SELECT
    NEW_TIME(null, 'AST', 'ADT') AS "1",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), null, 'ADT') AS "2",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 'AST', null) AS "3"
FROM DUAL;

Резултат:

      1       2       3 
_______ _______ _______ 
null    null    null   

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

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

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

Извикване на NEW_TIME() с грешен брой аргументи или без подаване на аргументи, води до грешка:

SELECT NEW_TIME()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT NEW_TIME()
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. как да използвате XMLImporter и FndXdfCmp в Oracle EBS

  2. Как да изпълните съхранена процедура на Oracle чрез връзка към база данни

  3. Oracle - Как да създадете материализиран изглед с БЪРЗО ОБНОВЯВАНЕ и ПРИСЪЕДИНЕНИЯ

  4. SYS_GUID() Функция в Oracle

  5. Как предавате аргумент на PL/SQL блок в sql файл, извикан с помощта на START в sqlplus?