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