bạn có thể truyền kết quả nếu bạn muốn độ chính xác thấp hơn:
SQL> SELECT TO_DSINTERVAL('10 10:00:00') t_interval FROM dual;
T_INTERVAL
-----------------------------------------------------------
+000000010 10:00:00.000000000
SQL> SELECT CAST(TO_DSINTERVAL('10 10:00:00')
2 AS INTERVAL DAY(2) TO SECOND(3)) t_interval
3 FROM dual;
T_INTERVAL
-----------------------------------------------------------
+10 10:00:00.000
Chỉnh sửa bình luận OP sau:
Từ Tài liệu Oracle (11gr1):
Các kiểu dữ liệu khoảng thời gian không có mô hình định dạng. Do đó, để điều chỉnh bản trình bày của chúng, bạn phải kết hợp các hàm ký tự như EXTRACT và nối các thành phần.
Có vẻ như bạn sẽ phải sử dụng EXTRACT theo cách thủ công để đạt được đầu ra mong muốn:
SQL> SELECT to_char(extract(DAY FROM t_interval), 'fmS99999') || ' ' ||
2 to_char(extract(HOUR FROM t_interval), 'fm00') || ':' ||
3 to_char(extract(MINUTE FROM t_interval), 'fm00') || ':' ||
4 to_char(extract(SECOND FROM t_interval), 'fm00.000')
5 FROM (SELECT TO_DSINTERVAL('10 01:02:55.895') t_interval FROM dual)
6 ;
TO_CHAR(EXTRACT(DAYFROMT_INTER
------------------------------
+10 01:02:55.895
Điều này không được thanh lịch cho lắm nhưng có vẻ như đây là cách duy nhất để xử lý độ chính xác đến từng micro giây.