代码之家  ›  专栏  ›  技术社区  ›  Slava Markeyev

MYSQL NOW()落后30秒

  •  2
  • Slava Markeyev  · 技术社区  · 15 年前

    当我查询NOW()时,mysql返回一个时间,这个时间与服务器上的当前时间相差大约-30秒。有什么想法吗?我试着查看配置文件,但什么也没找到。我运行的是5.1.37版本

    SELECT NOW()
    
    2 回复  |  直到 15 年前
        1
  •  5
  •   janm    15 年前

    服务器的时区上下文和获取日期的上下文几乎肯定对闰秒的存在有不同的看法。我想相差24秒而不是30秒。

    当你得到日期时,你可以通过调整时区来测试这一点。在各种unix上,您可以使用时区上的“right/”前缀来调整闰秒,并查看它是如何改变事情的。

    要解决这个问题,您需要确保服务器在正确设置时区环境变量的情况下运行。

    错过了“windows”标签。Windows时间被定义为UTC而不是TAI,因此包含闰秒。如果差异真的是24秒,那么您需要检查mysql没有像Windows那样应用闰秒调整。

        2
  •  2
  •   Matt Mitchell    15 年前

    您确定运行脚本并检查服务器上的时间不需要30秒吗?

    指示事件发生的时间 语句开始执行。

    如果您需要通话时间,请使用 SYSDATE() 相反。

    如果这一切都是好的,你仍然有一个问题,你肯定只是使用 SELECT NOW() ? 如果您在查询中的某个地方添加了一个字段,那么它实际上可能正在添加到 NOW()

    Server Timezone Support MySQL文章。也许闰秒被忽略了或者什么的。。

    你是否重启了MySQL服务器,以防服务器启动后调整了服务器时间?