можете да хвърлите резултата, ако искате по-малко прецизност:
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
Редактирайте следния коментар на ОП:
От документацията на Oracle (11gr1):
Интервалните типове данни нямат форматни модели. Следователно, за да коригирате представянето им, трябва да комбинирате функции на символи като ИЗВЪРХВАНЕ и да обединявате компонентите.
Изглежда, че ще трябва ръчно да използвате EXTRACT, за да постигнете желания резултат:
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
Това не е много елегантно, но изглежда, че е единственият начин да се справите с точността на микросекунди.