如何在现有SQL中添加条件提取最近一小时内创建或修改的记录
解决方案
你只需要在原SQL的WHERE子句中新增一行时间判断条件即可,修改后的完整代码如下:
SELECT CODE_ART_COM, LIB_ART_COM, TO_CHAR( CAST( COALESCE(GREATEST(DAT_CRE, DAT_MOD), DAT_CRE) AS TIMESTAMP ), 'YYYY-MM-DD HH24:MI:SSxFF' ) TIMESTAMP FROM ART_COM WHERE ETAT = 0 AND CODE_ART_COM IN ( SELECT CODE_ART_COM FROM PROD_COM WHERE ETAT = 0 ) -- 新增的上一小时时间过滤条件 AND COALESCE(GREATEST(DAT_CRE, DAT_MOD), DAT_CRE) >= SYSDATE - 1/24
条件说明:
- 先通过
GREATEST(DAT_CRE, DAT_MOD)取创建时间、修改时间中更晚的时间点,若DAT_MOD为null(从未修改过),GREATEST会返回null,再通过外层的COALESCE函数兜底返回创建时间DAT_CRE,最终得到该记录最后一次被操作的时间 - Oracle中
SYSDATE代表当前系统时间,日期类型做数值运算时1代表1天,因此SYSDATE - 1/24就代表当前时间往前推1小时的时间点,过滤出最后操作时间大于等于该时间点的记录,就是你需要的上一小时内创建/修改的记录
内容的提问来源于stack exchange,提问作者user12393685
相关产品推荐
相关产品推荐

