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: