Một Oracle DATE
kiểu dữ liệu không có múi giờ - bạn cần có TIMESTAMP WITH TIMEZONE
kiểu dữ liệu:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Nếu bạn muốn chuyển đổi thành DATE
(và khu vực múi giờ luôn là CET
) thì bạn có thể sử dụng:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Nếu bạn muốn nó là DATE
kiểu dữ liệu và để tôn trọng múi giờ trong chuỗi gốc thì bạn sẽ cần (1) chuyển đổi nó thành TIMESTAMP WITH TIMEZONE
loại dữ liệu; (2) chuyển đổi giá trị đó sang múi giờ chuẩn hóa (UTC thường được sử dụng cho việc này); sau đó (3) chuyển đổi nó thành một ngày:
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;
Sẽ xuất ra ngày 2016-11-24 14:20:52
(đại diện UTC của ngày nhập).