Bạn có hai vấn đề:TO_DATE
không nhận ra bất kỳ thành phần múi giờ hoặc giây phân số nào, bạn sẽ phải chuyển đổi nó thành dấu thời gian với múi giờ và .s
không phải là cách bạn thể hiện phân số giây, bạn cần .ff
. Các mô hình định dạng hợp lệ được hiển thị trong tài liệu
.
Kết hợp chúng lại với nhau bạn có thể làm:
SELECT TO_TIMESTAMP_TZ ('2015-08-26T05:46:30.488+0100',
'YYYY-MM-DD"T"hh24:mi:ss.ffTZHTZM')
FROM DUAL;
TO_TIMESTAMP_TZ('2015-08-26T05:46:30.488+0100','YYYY-MM-DD"T"HH24:MI:SS.FFTZHTZ
-------------------------------------------------------------------------------
26-AUG-15 05.46.30.488000000 +01:00
Nếu bạn thực sự muốn nó là một ngày, bạn sẽ cần quyết định phải làm gì với thông tin múi giờ - giả sử đó là giờ địa phương (về cơ bản là bỏ qua nó) hoặc chuyển đổi sang UTC hoặc một số múi giờ khác. Tuy nhiên, bạn có thể thực sự muốn giữ nó như một dấu thời gian với múi giờ.