Ein Oracle DATE
Datentyp hat keine Zeitzone - Sie benötigen einen TIMESTAMP WITH TIMEZONE
Datentyp:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Wenn Sie in ein DATE
konvertieren möchten (und die Zeitzonenregion ist immer CET
) dann können Sie verwenden:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Wenn Sie es als DATE
wünschen Datentyp und um die Zeitzone in der ursprünglichen Zeichenfolge zu respektieren, müssen Sie sie (1) in einen TIMESTAMP WITH TIMEZONE
konvertieren Datentyp; (2) diesen Wert in eine standardisierte Zeitzone umwandeln (dafür wird häufig UTC verwendet); dann (3) wandle das in ein Datum um:
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;
Dadurch wird das Datum 2016-11-24 14:20:52
ausgegeben (die UTC-Darstellung des Eingabedatums).