Bạn có thể trừ ngày trong Oracle. Điều này sẽ cho bạn sự khác biệt trong ngày. Nhân với 24 để nhận giờ, v.v.
SQL> select oldest - creation from my_table;
Nếu ngày của bạn được lưu dưới dạng dữ liệu ký tự, trước tiên bạn phải chuyển nó thành loại ngày.
SQL> select 24 * (to_date('2009-07-07 22:00', 'YYYY-MM-DD hh24:mi')
- to_date('2009-07-07 19:30', 'YYYY-MM-DD hh24:mi')) diff_hours
from dual;
DIFF_HOURS
----------
2.5
Note:
câu trả lời này áp dụng cho ngày đại diện bởi các kiểu dữ liệu Oracle DATE
. Oracle cũng có kiểu dữ liệu TIMESTAMP
, cũng có thể đại diện cho một ngày (với thời gian). Nếu bạn trừ các giá trị TIMESTAMP
, bạn sẽ nhận được INTERVAL
; để trích xuất các giá trị số, hãy sử dụng hàm EXTRACT
.
Gần trùng lặp: http://stackoverflow.com/questions/9322935/subtracting-dates-in-oracle-number-or-interval-datatype –