2

私は oracle db に取り組んでいますが、Oracle はあまり得意ではありません。行を 1 時間間隔で分割しようとしています。

たとえば、時間行が次のように指定されている場合、

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

2013/09/01 09:30:00 2013/09/01 11:38:59

私が見たい結果は次のようになります。

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

やり方を調べたのですが見つかりませんでした。
でも、「CONNECT BY」を使えばできると思います。
どんな助けでも素晴らしいでしょう。前もって感謝します。

4

2 に答える 2

2

基本的なクエリを作成しました。それを回避して、必要なものを取得できます。

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

于 2013-09-16T07:16:18.280 に答える