暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 带有时区比较问题的时间戳

ASKTOM 2021-04-28
628

问题描述

嗨,

在使用11g r2中的systimestamp使用时区数据验证时间戳时,我面临一个问题。
我的数据库服务器在美国/中心区。

我有一个带有时区数据类型列的时间戳表,并且我为相同的时区 (美国/中央或UTC-5) 插入了未来的时间戳。
在从表中选择数据时,我们得到相同的数据。

我也有一个匿名块,它验证表中的时间戳是否交叉的systimestamp不是。

在3月更改夏令时之前,此过程正常运行。当systimestamp大于带有时区列的时间戳时,这两种方法都返回正确的输出。
但是,在更改夏令时后,通过将时区设置为US/Central格式插入的记录仅在实际时间后1小时后返回正确的输出。

我在livesql中提供了一个示例,希望这可以帮助解释我面临的问题。

这种行为有什么具体原因吗?

提前感谢您的帮助

谢谢,
Manoj

专家解答

I have inserted a future timestamp for same timezone (US/Central or UTC-5)

这些不是同一个时区!

UTC-5总是比UTC晚五个小时。

美国/中部是five or six落后几个小时,这取决于夏令时是否生效。4月实行夏令时,所以目前美国/中央-> UTC-6。

Systimetamp返回安装数据库的操作系统的日期和时区。如果这使用固定的时区偏移 (例如UTC),那么systimestamp和US/Central之间的差异将在五到六个小时之间切换,具体取决于一年中的时间。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论