Đây là truy vấn của Oracle chỉ khác biệt về thời gian calc. Tôi nghĩ rằng nó sẽ hoạt động trong bất kỳ SQL nào nếu bạn thay thế kép bằng bảng của mình. Có các hàm LAG / LEAD để so sánh các giá trị hàng trước / sau nhưng tôi không biết liệu các hàm đó có sẵn trong phiên bản SQL của bạn hay không. Tôi hy vọng điều này hữu ích cho bạn:
SELECT trunc(mydate / 3600) hr
, trunc(mod(mydate, 3600) / 60) mnt
, trunc(mod(mydate, 3600) / 60 /60) sec
FROM
(
SELECT (to_date('01/02/2013 23:00:00', 'mm/dd/yyyy hh24:mi:ss') -
to_date('01/01/2013 07:00:00', 'mm/dd/yyyy hh24:mi:ss')) * 86400 mydate
FROM dual
)
/