Formentlig forvirrer de faste T og Z dig en smule, da de ikke er normale dato-tidsformatmodel elementer. Men dokumentationen siger:
Så du omslutter T og Z i dobbelte anførselstegn, som "T"
og "Z"
, i din formatmodel.
Hvis du ikke er interesseret i tidszonen, kan du bruge den to_timestamp()
funktion
:
to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
Eller hvis du vil have med tidszonen, kan du bruge den to_timestamp_tz()
funktion
, som som standard vil være din aktuelle sessionstidszone (da du faktisk ikke angiver en her, fortolkes Z'et ikke som Zulu/UTC):
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
Hvis du vil have det med en tidszone og vil angive, at det er UTC, kan du tvinge det til med den from_tz()
funktion
:
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')
For at se forskellen, som de producerer, skal du angive en tidszone for sessionen som en demo:
alter session set time_zone = 'America/New_York';
select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
from dual;
NO_TZ
--------------------------------------------------
DEFAULT_TZ
--------------------------------------------------
UTC_TZ
--------------------------------------------------
24-MAR-15 07.08.24.000000000
24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK
24-MAR-15 07.08.24.000000000 UTC
Jeg antager, at Z er fast, og de værdier, du får, repræsenterer derfor altid UTC; hvis du faktisk får forskellige tidszoner i de værdier, du skal konvertere, bliver du nødt til at udtrække og anvende dem - hvilket er muligt, men svært og ikke værd at gå ind i, medmindre du rent faktisk har den situation.