Bạn có một thiết kế thiếu sót .
- Bạn không bao giờ nên lưu trữ ngày giờ giá trị là chuỗi .
- DATE luôn có cả yếu tố ngày và giờ, vì vậy không cần phải lưu trữ yếu tố thời gian một cách riêng biệt.
Dù sao, là một giải pháp thay thế, trước tiên bạn cần chuyển đổi chuỗi thành ngày tháng và sau đó tìm thời lượng trong giây , thêm giây vào TRUNC(SYSDATE)
, thì phần còn lại là định dạng ngày đơn giản .
Ví dụ:
SQL> WITH sample_data AS(
2 SELECT '21:30:03' START_TIME, '21:34:11' END_TIME FROM dual
3 )
4 SELECT start_time,
5 end_time,
6 TO_CHAR (TRUNC (SYSDATE) + (to_date(end_time, 'HH24:MI:SS') -
7 to_date(start_time, 'HH24:MI:SS')
8 ) , 'hh24:mi:ss' ) duration
9 FROM sample_data;
START_TI END_TIME DURATION
-------- -------- --------
21:30:03 21:34:11 00:04:08
SQL>