Oracle DATE
typ danych nie ma strefy czasowej - potrzebujesz TIMESTAMP WITH TIMEZONE
typ danych:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Jeśli chcesz przekonwertować na DATE
(a region strefy czasowej to zawsze CET
) możesz użyć:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Jeśli chcesz to jako DATE
typ danych i respektowanie strefy czasowej w oryginalnym ciągu, musisz (1) przekonwertować go na TIMESTAMP WITH TIMEZONE
typ danych; (2) przekonwertować tę wartość na znormalizowaną strefę czasową (często używa się do tego czasu UTC); następnie (3) przekonwertuj to na datę:
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;
Który zwróci datę 2016-11-24 14:20:52
(reprezentacja UTC daty wejścia).