Oracle,按一小时期间拆分时间持续时间行

标签: sql Oracle
发布时间: 2017/4/14 23:56:02
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在 oracle 数据库上工作,我不是很擅长oracle。 我想按一小时期间拆分的行。

例如,如果时间行已经给出了如下,

Start_time (yyyy/mm/dd hh24:mi:ss) | End_time (yyyymmdd/hh24:mi:ss)

2013/09/01 9:30         2013年/09/01 11:38:59

我想要看到这样的结果︰

2013/09/01 9:30         2013年/09/01 9:59:59  
2013年/09/01 10:00         2013年/09/01 10:59:59
2013年/09/01 11:00         2013年/09/01 11:38:59

我找遍了怎么做但是我找不到。
但我想它可以通过使用连接。
任何帮助会很大。提前感谢。

解决方法 1:

我有打架基本查询,你可以在它附近工作,得到你想要的。

select greatest(Start_time, trunc(Start_time+(level-1)/24, 'hh24')), 
least(End_time, trunc(Start_time+(level)/24, 'hh24'))
from log_table 
connect by level <= floor((dt1-dt2)*24)+1;

在 sqlfiddle 的示例︰

http://sqlfiddle.com/# ! 4/82625/29

赞助商