Oracle DATE
datový typ nemá časové pásmo – potřebujete TIMESTAMP WITH TIMEZONE
datový typ:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Pokud chcete převést na DATE
(a oblast časového pásma je vždy CET
), pak můžete použít:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Pokud to chcete jako DATE
datový typ a pro respektování časového pásma v původním řetězci jej budete muset (1) převést na TIMESTAMP WITH TIMEZONE
datový typ; (2) převést tuto hodnotu na standardizované časové pásmo (často se k tomu používá UTC); pak (3) to převeďte na datum:
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;
Které vypíše datum 2016-11-24 14:20:52
(reprezentace UTC data vstupu).