En Oracle DATE
datatypen har ikke en tidszone - du skal bruge et TIMESTAMP WITH TIMEZONE
datatype:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Hvis du vil konvertere til en DATE
(og tidszoneområdet er altid CET
), så kan du bruge:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Hvis du vil have det som en DATE
datatype og for at respektere tidszonen i den originale streng, skal du (1) konvertere den til et TIMESTAMP WITH TIMEZONE
datatype; (2) konverter denne værdi til en standardiseret tidszone (UTC bruges ofte til dette); derefter (3) konverter det til en dato:
SELECT CAST(
TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
AT TIME ZONE 'UTC'
AS DATE
)
FROM DUAL;
Som udsender datoen 2016-11-24 14:20:52
(UTC-repræsentationen af inputdatoen).