oracle - 根据日期之间的小时差更新表中的记录
问题描述
我正在尝试更新超过 24 小时(1 天)的表中的记录。我想通过使用以下查询在 Day 而不是几个小时内获取差异:
UPDATE Testing
SET STS_CD='02'
WHERE EXTRACT(DAY FROM SYSTIMESTAMP)- EXTRACT(DAY FROM UPD_DTM)> 1
现在,可能存在我们必须检查 12 小时前或 36 小时前的记录的情况。所以,我现在只需要根据小时来计算差异。而且,在尝试根据小时数得出差异时,我没有得到正确的结果。你能建议吗?
UPDATE Testing
SET STS_CD='02'
WHERE EXTRACT(HOURS FROM SYSTIMESTAMP)- EXTRACT(HOURS FROM UPD_DTM)> 24
解决方案
日期算术适用于天数,除非您想要不同的东西。例如,如果您减去日期列和数字 2 ( upd_dtm - 2
),您将得到“两天前”。
然后更新日期列在过去 1 天(或 24 小时)内的行
UPDATE Testing
SET STS_CD = '02'
WHERE upd_dtm > sysdate - 1
或者,where upd_dtm > sysdate - 24/24
(因为一天有 24 小时)。
也看看这个;将来可能会对您有所帮助:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi';
Session altered.
SQL> select
2 sysdate - 1 one_day_ago,
3 sysdate - 12/24 twelve_hours_ago,
4 sysdate - 36/24 thirty_six_hours_ago
5 from dual;
ONE_DAY_AGO TWELVE_HOURS_AGO THIRTY_SIX_HOURS
---------------- ---------------- ----------------
23.09.2018 09:38 23.09.2018 21:38 22.09.2018 21:38
SQL>
推荐阅读
- python - 如何在一行中一起写入打印字符串变量和循环范围变量
- python - 使用批处理渲染时如何从屏幕上移除对象(标签、图形)?
- excel - 如何更改当前保存“ThisWorkbook.Path”的文件的路径?
- sql - 将存储过程从 SQL Server 引入 Power BI:将数据类型 nvarchar 转换为 bigint 时出错
- html - 使用 Flex Box 使一些盒子垂直和水平
- javascript - 根据在另一个下拉列表中选择的值填充下拉列表
- apache - Apache RewriteMap 无法找到外部文件中存在的 url
- java - org.springframework.web.bind.annotation.ResponseStatus 和 org.springframework.http.HttpStatus 不存在
- python - 从 Pandas 系列中提取“url”值
- mysql - 这个查询有什么问题?我正在尝试创建一个带有一些主 ID 的练习小表来进行匹配,但我在这里找不到错误