I Oracle Database er NEW_TIME() funktion konverterer datoen fra en specificeret tidszone til en anden specificeret tidszone og returnerer resultatet.
Syntaks
Syntaksen ser sådan ud:
NEW_TIME(date, timezone1, timezone2)
Så funktionen returnerer datoen og klokkeslættet i tidszonen timezone2 når dato og klokkeslæt i tidszonen timezone1 er date .
Bemærk, at før du bruger denne funktion, skal du indstille NLS_DATE_FORMAT parameter for at vise 24-timers tid.
Argumenterne timezone1 og timezone2 kan være en af disse tekststrenge:
AST eller ADT | Atlantic Standard eller Daylight Time |
BST eller BDT | Bering Standard eller Daylight Time |
CST eller CDT | Central standard eller dagslystid |
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 |
Eksempel
Her er et eksempel:
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ævnt, når du bruger denne funktion, er NLS_DATE_FORMAT parameter skal indstilles til at vise 24-timers tid, så det er, hvad den første linje gør i ovenstående eksempel. Du kan udelade denne linje, hvis din sessions NLS_DATE_FORMAT parameter bruger allerede 24-timers tid. Se Sådan indstiller du din sessions datoformat for flere eksempler på indstilling af datoformatet for den aktuelle session.
Nul-argumenter
Hvis et argument er null , resultatet er 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 returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.
Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.
Manglende argument
Kalder NEW_TIME() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
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: