Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

format interval dengan to_char

Anda dapat memberikan hasilnya jika Anda menginginkan lebih sedikit presisi:

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

Edit komentar OP berikut:

Dari Dokumentasi Oracle (11gr1):

Tipe data interval tidak memiliki model format. Oleh karena itu, untuk menyesuaikan presentasinya, Anda harus menggabungkan fungsi karakter seperti EXTRACT dan menggabungkan komponen.

Sepertinya Anda harus menggunakan EXTRACT secara manual untuk mendapatkan hasil yang diinginkan:

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


Ini tidak terlalu elegan tetapi tampaknya ini adalah satu-satunya cara untuk menangani presisi mikrodetik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL - Identifikasi rentang nilai berurutan

  2. 12c Fitur Usang

  3. dbms_lob.getlength() vs. length() untuk menemukan ukuran gumpalan di Oracle

  4. Klon ORACLE_HOME

  5. Kueri rekursif SQL pada tabel referensi mandiri (Oracle)