回答

收藏

Oracle,将持续时间行除以一小时

技术问答 技术问答 139 人阅读 | 0 人回复 | 2023-09-13

我正在研究oracle db,但我不太擅长Oracle。我正在尝试按一个小时的时段划分一行。  M4 b3 F( O/ `, G8 y, z7 n
例如,如果一个时间行给出如下,' K; l* I0 b1 D( R9 e4 Z* j
开始时间(yyyy / mm / dd hh24:mi:ss)| 结束时间(yyyy / mm / dd hh24:mi:ss)
* ~" q9 [6 J; I$ v  z- s7 \2013/09/01 09:30:00 2013/09/01 11:38:59
; C; U+ `) f: ^1 w6 ^我想要看到的结果是这样的:: F4 I$ Z  W& R# Z
2013/09/01 09:30:00 2013/09/01 09:59:59    [% c* M* Y1 ]1 ]1 {: e
2013/09/01 10:00:00 2013/09/01 10:59:59
$ S8 [( q/ x! r/ U; L# U2013/09/01 11:00:00 2013/09/01 11:38:59
- S9 x! v9 \7 ~/ O: v+ l我已经被搜索过如何做,但是找不到。) E* r& a0 k. L# L0 s/ a
但是我想可以通过使用“ CONNECT BY”来完成。
# N) s" ?5 T! n, j任何帮助都会很棒。提前致谢。; [4 o6 ~, S6 w' q! O8 U# h
               
, v* `; J2 o! A8 `3 j6 p* |7 \) R. d解决方案:6 m6 R# s2 l0 g# }% u, F; e: e5 W: T
                0 r4 }* M. W8 H1 _
2 \8 C1 b2 ?" s" N; s( A, f

0 w# k, J2 S' [+ @3 r* W+ Z                我有一个基本的查询,您可以解决它并得到您想要的。1 y. Z! s* P% f/ x
select greatest(Start_time, trunc(Start_time+(level-1)/24, 'hh24')),
; s9 K& F3 ~( X1 \8 f3 [- w1 \0 ]least(End_time, trunc(Start_time+(level)/24, 'hh24'))
! D3 e/ ^& r9 N' @from log_table / W& R- w, c* F1 I
connect by level sqlfiddle的示例:
& A. Q: a9 r1 V9 Zhttp://sqlfiddle.com/#!4/82625/29
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则