V databázi Oracle je NEW_TIME()
funkce převede datum ze zadaného časového pásma do jiného určeného časového pásma a vrátí výsledek.
Syntaxe
Syntaxe vypadá takto:
NEW_TIME(date, timezone1, timezone2)
Funkce tedy vrací datum a čas v časovém pásmu timezone2
kdy je datum a čas v časovém pásmu timezone1
jsou date
.
Pamatujte, že před použitím této funkce budete muset nastavit NLS_DATE_FORMAT
parametr pro zobrazení 24hodinového času.
Argumenty timezone1
a timezone2
může být kterýkoli z těchto textových řetězců:
AST nebo ADT | Atlantický standardní nebo letní čas |
BST nebo BDT | Beringův standardní nebo letní čas |
CST nebo CDT | Standardní nebo letní čas |
EST nebo EDT | Východní standardní nebo letní čas |
GMT | Greenwichský střední čas |
HST nebo HDT | Aljašsko-Havajský standardní čas nebo letní čas |
MST nebo MDT | horský standardní nebo letní čas |
NST | Newfoundlandský standardní čas |
PST nebo PDT | Standardní tichomořský nebo letní čas |
YST nebo YDT | Yukonský standardní nebo letní čas |
Příklad
Zde je příklad:
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;
Výsledek:
2030-03-01 08:30:45
Jak již bylo zmíněno, při použití této funkce NLS_DATE_FORMAT
parametr musí být nastaven tak, aby zobrazoval 24hodinový čas, takže to dělá první řádek ve výše uvedeném příkladu. Tento řádek můžete vynechat, pokud je vaše relace NLS_DATE_FORMAT
parametr již používá 24hodinový čas. Další příklady nastavení formátu data pro aktuální relaci naleznete v části Jak nastavit formát data relace.
Nulové argumenty
Pokud je některý argument null
, výsledkem je 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;
Výsledek:
1 2 3 _______ _______ _______ null null null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null
dochází v důsledku SQL SELECT
prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Chybí argument
Volání NEW_TIME()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT NEW_TIME()
FROM DUAL;
Výsledek:
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: