以HH:MM:SS格式的输出计算不同行中相同字段的ORACLE中的TIME差异

问题描述

我想计算时间“第二行日期/时间(F3)”-“第一行日期/时间(F2)”,以获取ORACLE sql中的时差。 我尝试用LAG函数中的(extract,to_char)apply减去日期,但是我无法获得我想要的输出结果,如下所示。感谢有人可以在这个问题上为我提供帮助。谢谢。

[我希望获得的输出] [2]

SELECT stg_rmstmp_cj.ota_activity.ID,stg_rmstmp_cj.ota_activity.LOT,stg_rmstmp_cj.ota_activity.TYPE,stg_rmstmp_cj.ota_activity.KEY,stg_rmstmp_cj.ota_activity.VALUE,A.DATE,LAG(stg_rmstmp_cj.ota_activity.DATE) OVER (ORDER BY stg_rmstmp_cj.ota_activity.DATE) -stg_rmstmp_cj.ota_activity.DATE AS Different_time 
FROM stg_rmstmp_cj.ota_activity where A.ID='93K-100';

这是我最近遇到的带有添加分区的新错误,如下所示,但似乎确实解决了附带屏幕截图示例的问题:

select EQP_ID,LOT_ID,ACTIVITY,ID,TO_CHAR(MODIFIED_DATE,'yyyy-mm-dd hh24:mi:ss') dt,TO_CHAR (DATE '1900-01-01' + ABS ( LAG(MODIFIED_DATE,1)OVER(ORDER BY MODIFIED_DATE) - MODIFIED_DATE),'HH24:MI:SS')AS diff_withoutpartition,1)OVER(PARTITION BY EQP_ID ORDER BY MODIFIED_DATE) - MODIFIED_DATE),'HH24:MI:SS')AS diff_withpartition
from STG_RMSTMP_CJ.ota_activity where EQP_ID = '93K-P007' 

解决方法

Date-Date返回数字,其中1等于1天,因此您可以轻松计算小时,分钟和秒数:

Trunc(delta*24) = hours
Mod(trunc(delta*24*60),60) = minutes
Mod(trunc(delta*24*60*60),60) = seconds

还有另一种简单的方法:将delta添加到任何常量Date并使用简单的to_char。例如:to_char(date'2020-01-01' + delta,'hh24:mi:ss') 但是,如果delta> 1天,则需要将天数* 24加上小时,或者使用dec的31st作为常量Date,并将'dd'添加到格式掩码中

,

请尝试以下。这里的'1900-01-01'是虚拟的,TO_CHAR才能正常工作。

WITH MAIN
     AS (SELECT TO_DATE ('20200515 19:11:54','yyyymmdd hh24:mi:ss') DAT1,TO_DATE ('20200515 18:11:54','yyyymmdd hh24:mi:ss') DAT2
           FROM DUAL)
SELECT DAT1,DAT2,TO_CHAR (DATE '1900-01-01' + ABS (DAT1 - DAT2),'HH24:MI:SS')
  FROM MAIN

与使用LAG的功能相同。

WITH MAIN
     AS (SELECT TO_DATE ('20200515 19:11:54','yyyymmdd hh24:mi:ss') DAT2
           FROM DUAL
           UNION ALL
           SELECT TO_DATE ('20200514 19:12:54',TO_DATE ('20200514 16:12:54','yyyymmdd hh24:mi:ss') DAT2
           FROM DUAL
           )
SELECT DAT1,LAG(DAT1,1)OVER(ORDER BY DAT1) LAG,TO_CHAR (DATE '1900-01-01' + ABS ( LAG(DAT1,1)OVER(ORDER BY DAT1) - DAT1),'HH24:MI:SS')
  FROM MAIN

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...