当前位置: 首页 > 面试题库 >

带有夏时制的时间戳计算

胡浩瀚
2023-03-14
问题内容

中欧夏令时开始于三月的最后一个星期日。我们将时钟设置为02:00到03:00。如果我在数据库请求中进行时间戳计算会发生什么?比方说,在01:59?

UPDATE sessions SET aliveuntil = (CURRENT_TIMESTAMP + INTERVAL '1' MINUTE) WHERE id = ?

结果是03:00还是02:00?

如果我们将时钟设置为03:00到02:00,那结束了呢?

SELECT id FROM sessions WHERE aliveuntil < (CURRENT_TIMESTAMP - INTERVAL '1' MINUTE)

时间从03:00更改为02:00之后…(CURRENT_TIMESTAMP - INTERVAL '1' MINUTE)在02:00会发生什么?是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 am更改为3:00:00 am。02:00:00和02:59:59
am之间的时间间隔不存在。该时间间隔中的值无效。



 类似资料:
  • 我正在阅读Flink示例CountWithTimestamp,下面是该示例的代码片段: 我的问题是,如果我删除onTimer中的if语句(收集未触摸的stmt),而代之以processElement开头的另一个if语句

  • 看来我星期一早上有个案子!!! 正如你们所能看到的,我的本地机器位于东部时区,日光节约已经生效。这可以从下面的“日期”命令中看到。 然后我使用php生成了一个unix时间戳。它应该给出您当前的时间并在1970年1月1日的UTC 0:0:0将其转换为Unix纪元。 我的mysql会话被设置为UTC,我想象1460992469表示为mktime转换为UTC。 问题是转换回est不承认夏令时。谁能帮我指

  • 在美国,有诸如和这样的时区,在夏时制期间,它们是和,而当夏时制不生效时,它们是和。 那么,既然夏令时从3月的第二个星期日开始,到11月的第一个星期日结束,那么说3月到11月之间的日期是在还是是无效的吗?例如,以下日期在技术上是否不存在? 它不应该是,还是仅仅是,以避免必须指定或?

  • 我有一个Java客户机,它正在以UTC格式在MySQL DB中插入(通过CSV和'Load DATA Infile')时间戳(type TIMESTAMP)。我的服务器的时区是“America/New_York”,我需要保留夏令时信息。11月5日凌晨2点是美国东部时间转换到东部时间的时候,时钟拨回一个小时到凌晨1点。例如,11月5日凌晨1:30,发生两次;EDT和EST各一次。 我该如何让服务器区

  • 返回我女巫是错误的。 但接下来的查询如下: 我看对日期

  • 问题内容: 我需要计算两个日期之间经过的时间。 这里要注意的是,我需要像YouTube一样用视频评论时间戳来显示它。也就是说,仅以最大的方式显示它。 例如, 如果时间是50秒前,应该说是50秒前。 如果时间超过一分钟,则应说一分钟前/十分钟前,等等。 如果时差是1小时30分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等