ale*_*ter 6 sql oracle time oracle11g dst
中欧夏令时从3月的最后一个星期日开始.我们的时钟从02:00到03:00.如果我在数据库请求中进行时间戳计算会发生什么 - 让我们说在01:59?
UPDATE sessions SET aliveuntil = (CURRENT_TIMESTAMP + INTERVAL '1' MINUTE) WHERE id = ?
Run Code Online (Sandbox Code Playgroud)
我得到03:00结果还是02:00?
如果我们将时钟从03:00设置为02:00,那么过去怎么办呢?
SELECT id FROM sessions WHERE aliveuntil < (CURRENT_TIMESTAMP - INTERVAL '1' MINUTE)
Run Code Online (Sandbox Code Playgroud)
时间从03:00变为02:00 ... 02:00会发生什么(CURRENT_TIMESTAMP - INTERVAL '1' MINUTE)?是02:59还是01:59?
应如何处理?Oracle Database 11g 11.2.0.2.0版的最佳实践及其处理方式(在我的特定情况下)?
如果我正确理解他们的文档,这取决于数据库中表/列的设置方式。如果列设置为使用“WITH TIME ZONE”,则 Oracle 会自动确定正确/相关的值。在上面的示例中,如果aliveuntil 列具有此设置,那么如果您尝试在 1:59 添加 1 分钟,时间将更新为 3:00。
这是我发现的关于该主题的一篇有用的文章:
http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm
向下滚动到文章底部,您应该会看到您要查找的内容。
这是我发现相关的文章的一部分:
例如,在美国东部地区,夏令时生效时,时间从凌晨 01:59:59 变为凌晨 3:00:00。02:00:00 和 02:59:59 am 之间的间隔不存在。该区间内的值无效。
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |