Khi bạn trừ hai biến loại TIMESTAMP
, bạn nhận được INTERVAL DAY TO SECOND
bao gồm một số mili giây và / hoặc micro giây tùy thuộc vào nền tảng. Nếu cơ sở dữ liệu đang chạy trên Windows, systimestamp
thường sẽ có mili giây. Nếu cơ sở dữ liệu đang chạy trên Unix, systimestamp
thường sẽ có micro giây.
1 select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' )
2* from dual
SQL> /
SYSTIMESTAMP-TO_TIMESTAMP('2012-07-23','YYYY-MM-DD')
---------------------------------------------------------------------------
+000000000 14:51:04.339000000
Bạn có thể sử dụng EXTRACT
hàm để trích xuất các phần tử riêng lẻ của INTERVAL DAY TO SECOND
SQL> ed
Wrote file afiedt.buf
1 select extract( day from diff ) days,
2 extract( hour from diff ) hours,
3 extract( minute from diff ) minutes,
4 extract( second from diff ) seconds
5 from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
6* from dual)
SQL> /
DAYS HOURS MINUTES SECONDS
---------- ---------- ---------- ----------
0 14 55 37.936
Sau đó, bạn có thể chuyển đổi từng thành phần đó thành mili giây và cộng chúng lại
SQL> ed
Wrote file afiedt.buf
1 select extract( day from diff )*24*60*60*1000 +
2 extract( hour from diff )*60*60*1000 +
3 extract( minute from diff )*60*1000 +
4 round(extract( second from diff )*1000) total_milliseconds
5 from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
6* from dual)
SQL> /
TOTAL_MILLISECONDS
------------------
53831842
Tuy nhiên, thông thường, sẽ hữu ích hơn nếu có INTERVAL DAY TO SECOND
biểu diễn hoặc có các cột riêng biệt cho giờ, phút, giây, v.v. thay vì tính toán tổng số mili giây giữa hai TIMESTAMP
giá trị.