DATE
на Oracle типът данни няма часова зона - имате нужда от TIMESTAMP WITH TIMEZONE
тип данни:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Ако искате да конвертирате в DATE
(и регионът на часовата зона винаги е CET
), тогава можете да използвате:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Ако искате да е DATE
тип данни и за да спазвате часовата зона в оригиналния низ, тогава ще трябва (1) да го конвертирате в TIMESTAMP WITH TIMEZONE
тип данни; (2) конвертирайте тази стойност в стандартизирана часова зона (UTC често се използва за това); след това (3) преобразувайте това в дата:
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;
Което ще изведе датата 2016-11-24 14:20:52
(UTC представянето на въведената дата).