oracle - Oracle 时间戳和间隔
问题描述
我需要从表中获取记录systimestamp > LAST_UPDATE_TS + 5 minutes interval
请问可以帮忙查询吗?
ORACLE DB - 11G Version.
我已经尝试过如下但没有按预期工作。
SYSTIMESTAMP : 11-MAR-20 06.06.00.070695 AM -05:00
LAST_UPDATE_TS : 11-MAR-20 06.05.50.781167 AM
应用此条件后systimestamp > LAST_UPDATE_TS + INTERVAL '5' MINUTE
,我预计不会返回任何数据,但我仍然得到不满足条件的行。
解决方案
SYSTIMESTAMP
返回一个TIMESTAMP WITH TIME ZONE
与值进行比较的TIMESTAMP
值。
实际上甲骨文正在这样做:
SYSTIMESTAMP > FROM_TZ(LAST_UPDATE_TS + INTERVAL '5' MINUTE, SESSIONTIMEZONE)
比较本身是在 UTC 时间上执行的。
SYSTIMESTAMP
以数据库服务器操作系统的时区返回。如果此时区等于您当前的时区,SESSIONTIMEZONE
则条件按预期工作。
将会话时区更改为数据库服务器操作系统的时区,或尝试以下方法:
LOCALTIMESTAMP > LAST_UPDATE_TS + INTERVAL '5' MINUTE
它根本不使用时区。
推荐阅读
- python - 此表达式不支持 SQLAlchemy 运算符“getitem”
- python - 递归分组python DataFrame的行和列
- python - 如何使用网格 tkinter 将画布框架扩展到根主窗口?
- macos - 是否有任何自动化脚本可以在睡眠后取消选中“需要密码”并在 Mac 中关闭睡眠?
- linux - awk脚本,统计+value和-value的个数
- email - Nginx:邮件指令的配置日志
- ssl - 添加新的控制平面节点失败 k8s 1.21.0 [已解决]
- java - Courgette-JVM 在测试之间共享数据
- javascript - 静态 HTML - 使用 jquery.i18n.js 的本地化不起作用
- javascript - 如何测试是否在ScrollView中调用回调函数反应原生?