Sql 如何使用oracle计算估算时间?
我有两列开始时间和结束时间,并根据它们计算时间。 就像我的开始时间是0300AM,结束时间是0430AM一样,我的计算时间是0300AM:0330AM:0400AM 我该怎么办?这里有一个选项: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
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聚合结果,以冒号分隔值:
请提供更多详情。