首页 > 解决方案 > 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,我预计不会返回任何数据,但我仍然得到不满足条件的行。

标签: oracledatetimestampintervalssystimestamp

解决方案


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

它根本不使用时区。


推荐阅读