作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们的用例:
对于表 USERS
:
更新所有行(为列 ACTIVE
设置值 'N'
)以防用户处于非事件状态(列 'LAST_VISIT'
) 60
分钟。
Google 帮助我找到了如何在数据库中获取当前时间(我使用 Oracle
):
SELECT sysdate FROM dual;
然后我找到了如何找到两个日期之间的分钟差的方法:
SELECT(date1 - date2)*1440
看起来有点丑……但是还可以。
现在,我正在尝试将它们组合在一起:
UPDATE USERS u
SET ACTIVE='N'
WHERE SELECT((SELECT sysdate FROM dual) - u.LAST_VISIT)*1440 >60;
能否请您查看我的最终查询。
还好吗?或者,也许可以对其进行优化?
最佳答案
可以简化查询
UPDATE users u
SET active = 'N'
WHERE u.last_visit < sysdate - interval '1' hour;
如果 last_visit
上有一个可用于查询的索引(因为谓词具有足够的选择性),则此查询可能会使用该索引。
关于sql - Oracle:如何更新表中的 "outdated"日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32703512/
我是一名优秀的程序员,十分优秀!