I Oracle Database, NEW_TIME()
funktionen konverterar datumet från en angiven tidszon till en annan specificerad tidszon och returnerar resultatet.
Syntax
Syntaxen ser ut så här:
NEW_TIME(date, timezone1, timezone2)
Så, funktionen returnerar datum och tid i tidszonen timezone2
när datum och tid i tidszonen timezone1
är date
.
Observera att innan du använder den här funktionen måste du ställa in NLS_DATE_FORMAT
parameter för att visa 24-timmars tid.
Argumenten timezone1
och timezone2
kan vara någon av dessa textsträngar:
AST eller ADT | Atlantic Standard eller Daylight Time |
BST eller BDT | Bering Standard eller Daylight Time |
CST eller CDT | Central Standard eller Daylight Time |
EST eller EDT | Eastern Standard eller Daylight Time |
GMT | Greenwich Mean Time |
HST eller HDT | Alaska-Hawaii Standard Time eller Daylight Time |
MST eller MDT | Mountain Standard eller Daylight Time |
NST | Newfoundland Standard Time |
PST eller PDT | Pacific Standard eller Daylight Time |
YST eller YDT | Yukon Standard eller Daylight Time |
Exempel
Här är ett exempel:
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;
Resultat:
2030-03-01 08:30:45
Som nämnts, när du använder den här funktionen NLS_DATE_FORMAT
parametern måste ställas in för att visa 24-timmars tid, så det är vad den första raden gör i exemplet ovan. Du kan utelämna den här raden om sessionens NLS_DATE_FORMAT
parametern använder redan 24-timmars tid. Se Hur du ställer in din sessions datumformat för fler exempel på hur du ställer in datumformatet för den aktuella sessionen.
Nollargument
Om något argument är null
, resultatet är 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;
Resultat:
1 2 3 _______ _______ _______ null null null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Argument saknas
Ringer NEW_TIME()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT NEW_TIME()
FROM DUAL;
Resultat:
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: