Oracle SQL 使用 Systimestamp 查询时间戳在过去 1 小时内的位置

Oracle SQL Query Where Timestamp is in Last 1 hour Using Systimestamp

使用甲骨文 11g

我读了另一个 SO post,其中间隔“1”小时应该以我期望的方式工作,所以我想知道为什么我会从这两个查询中得到不同的结果,也许有助于更好地理解间隔查询有效...

这两个查询的目的是获取在 table 上不到 1 小时的所有记录。

select err_ts from tbl where err_ts > systimestamp-(1/24) order by err_ts desc;

30-JAN-15 02.14.48.000000000 PM
30-JAN-15 02.08.58.000000000 PM
30-JAN-15 01.49.09.000000000 PM

select err_ts 来自 tbl where (systimestamp - err_ts) < interval '1' hour order by err_ts desc;

30-JAN-15 02.14.48.000000000 PM
30-JAN-15 02.08.58.000000000 PM
30-JAN-15 01.49.09.000000000 PM
30-JAN-15 01.28.40.000000000 PM
30-JAN-15 01.21.12.000000000 PM
30-JAN-15 01.17.06.000000000 PM

使用 localtimestamp 而不是 systimestamp 解决了隐式转换为日期类型以减去 (1/24) 丢失时区的问题。