Sql 如何使用oracle计算估算时间?

Sql 如何使用oracle计算估算时间?,sql,oracle,Sql,Oracle,我有两列开始时间和结束时间,并根据它们计算时间。 就像我的开始时间是0300AM,结束时间是0430AM一样,我的计算时间是0300AM:0330AM:0400AM 我该怎么办?这里有一个选项: SQL> with test (start_time, end_time) as 2 (select '0300am', '0430am' from dual), 3 dates as 4 (select to_date(start_time, 'hhmiam') cst

我有两列开始时间和结束时间,并根据它们计算时间。 就像我的开始时间是0300AM,结束时间是0430AM一样,我的计算时间是0300AM:0330AM:0400AM 我该怎么办?

这里有一个选项:

SQL> with test (start_time, end_time) as
  2    (select '0300am', '0430am' from dual),
  3  dates as
  4    (select to_date(start_time, 'hhmiam') cst,
  5            to_date(end_time, 'hhmiam') cet
  6     from test
  7    )
  8  select listagg(to_char(cst + 30/(24*60) * (level - 1), 'hhmiam'), ':')
  9         within group (order by level) result
 10  from dates
 11  connect by level <= (cet - cst) * 24 * 2;

RESULT
--------------------------------------------------------------------------------
0300AM:0330AM:0400AM

SQL>
它有什么作用

第1-2行:样本数据 CTE日期行3-7将样本数据转换为日期数据类型 分层查询行8-11: to_char的参数将30分钟30/24*60加到开始时间cst乘以结束时间内出现的30分钟数减去第11行中的开始时间段cet-cst,该时间段乘以一天中的24小时数,因为减去两个日期后的结果是天数,2减去一小时内的两个30分钟时间段 to_char本身将结果格式化为所需格式 listagg聚合结果,以冒号分隔值:
请提供更多详情。