在我的数据库中我有两列START_TIME,END_TIME,两者都在VARCHAR2(8)中,我需要使用END_TIME- START_TIME找到持续时间。
START_TIME | END_TIME | DURATION
21:30:03 21:34:11 00:04:08
我想做以下的事情,我该怎么做?
SELECT TO_DATE(END_TIME, 'HH24:MI:SS') AS END,
TO_DATE(START_TIME, 'HH24:MI:SS') AS START,
(END-START) AS duration FROM Table1;
答案 0 :(得分:2)
你有有缺陷的设计。
无论如何,作为一种解决方法,您需要先将字符串转换为日期,然后在秒中查找持续时间,将秒添加到TRUNC(SYSDATE)
,然后其余的很简单日期格式。
例如,
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>