小时差异insql

时间:2017-08-23 23:42:16

标签: sql oracle

尝试使用事件日期(包括时间)和上一个日期(包括时间)查找每个工作人员在Pick表上花费的时间 事件日期是工人的结束日期,上一个日期作为开始日期。 我在一些回报中得到负面数据

这是查询:SELECT OEL_UID,NVL(PREVDT,EVENT_TIME)PREVDT,EVENT_TIME,TO_CHAR(ROUND((EVENT_TIME - NVL(PREVDT,EVENT_TIME))*(24),4))HRSSPENT FROM(SELECT OEL_UID,EVENT_TIME ,LAG(EVENT_TIME)OVER(由PICKSTATE订购OEL_UID订单,EVENT_TIME)作为PREIDT,PICKSTATE,ORDERID来自DAIDATA.MI_PICK,其中OEL_CLASS =' OEL_PICK_SORTED'

“用过的小时数”列返回

OP评论

当前一个日期是例如" 22-aug-2017 21:23:06"和事件日期例如" 23-aug-2017 00:10:23"然后结果显示为-21 ....因为第二天的时间数字较小。如果活动日的时间比前一天更高,我会得到肯定的结果。

1 个答案:

答案 0 :(得分:0)

尝试以下---

SELECT ROUND(24 * (to_date('23-AUG-2017 00:10:23', 'dd/MM/yyyy hh24:mi:ss') -
             to_date('22-AUG-2017 21:23:06', 'dd/MM/yyyy hh24:mi:ss')),
             4)
  from dual;