如何根据一天中的任务完成从给定日期列获取开始日期和结束日期(oracle DB)

时间:2017-08-03 09:08:11

标签: sql oracle

在虚拟数据中,您可以看到有两列Task_Completion和Time_stamp.there是一个java调度程序,只要任务完成就会运行,例如,调度程序在15-FEB-2016上运行5次,在17-FEB上运行只有一次所以我想要一个从给定列time_stamp计算start_time和end_time的查询

Task_Completion                     Time_stamp
true                     15-FEB-16 11.37.56.013000000 AM
true                     15-FEB-16 11.42.55.593000000 AM
true                     15-FEB-16 11.47.48.970000000 AM
true                     15-FEB-16 12.21.57.587000000 PM
true                     15-FEB-16 12.26.55.767000000 PM 
true                     17-FEB-16 10.24.03.320000000 PM
true                     17-FEB-16 10.44.03.320000000 PM
true                     18-FEB-16 10.19.03.333000000 PM   
true                     18-FEB-16 10.23.03.333000000 PM
ture                     18-FEB-16 10.55.03.333000000 PM 

所以输出必须像

      start_time                                      end_time
15-FEB-16 11.37.56.013000000 AM          15-FEB-16 11.47.48.970000000 AM
15-FEB-16 12.21.57.587000000 PM          15-FEB-16 12.26.55.767000000 PM 
17-FEB-16 10.21.33.320000000 PM          17-FEB-16 10.26.33.320000000 PM
17-FEB-16 10.41.33.320000000 PM          17-FEB-16 10.46.33.320000000 PM
18-FEB-16 10.19.03.333000000 PM          18-FEB-16 10.23.03.333000000 PM
18-FEB-16 10.52.33.333000000 PM          18-FEB-16 10.57.33.333000000 PM  

有条件:

如果 time_stamp 中存在0-5分钟的差距,例如 15-Feb ,那么 start_time 11.37.56.013000000 end_time 11.47.48.970000000 但是如果没有,那么再次检查是否有任何计划在那天运行,如在 15-Feb 12.21.57.587000000(start_time) 12.26.55.767000000(end_time)

但是,如果计划在该日期与下一个计划的时间间隔超过5分钟运行,那么查询必须返回硬编码值 ,例如< / EM> 17-FEB-16 调度程序运行两次 10.24.03.320000000 PM 10.44.03.320000000 PM 因此他们的差距超过5分钟然后它必须返回输出2次,因为时间间隔超过5分钟。在那种情况下,将start_time添加2.30分钟,将2.30分钟添加到修复的end_time(硬编码) 喜欢 17-FEB-16 10.21.33.320000000 PM(开始时间) 17-FEB-16 10.26.33.320000000 PM(end_time) 17 -FEB-16 10.41.33.320000000 PM(开始时间),17-FEB-16 10.46.33.320000000 PM(end_time),此条件必须适用于所有日期。

同样,在18日,计划运行 3次,因此它将计为2运行,即10.19.03到10.23.03,下一个10.52.33到10.57。 33(2.30min-start_time和2.30min + end_time)。

1 个答案:

答案 0 :(得分:0)

ViewController1