2010-07-13 81 views
2

当我执行NOW()的查询时,mysql返回的时间与服务器上当前时间相差大约-30秒。有任何想法吗?我试着查看配置文件,什么都没发现。我运行版本5.1.37MYSQL NOW()落后30秒

SELECT NOW() 

回答

5

服务器和你在哪里得到的日期几乎可以肯定有闰秒存在不同看法的情况下的时区上下文。我怀疑差异将是24s而不是30s。

您可以在获取日期时通过调整时区来测试。在各种Unix上,你可以在时区上使用“right /”前缀来调整闰秒并查看改变情况的方式。

为了解决这个问题,你需要确保服务器与正确设置时区环境变量运行。

更新:

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

2

你肯定用不了30秒,您运行脚本,然后检查服务器上的时间?

NOW()返回一个常数时间 点指出了 语句开始执行的时间。

您需要根据查询初始化未完成的情况进行比较。

如果您需要时间,请致电SYSDATE()代替。

如果这一切是好的,你还有一个问题,你肯定只是用SELECT NOW()?如果你在查询的某个地方添加了一个字段,它可能实际上将添加到NOW()列而不是您认为的那个列。

如果这一切仍然是检查出,我认为这可能支付撇去Server Timezone Support MySQL的文章。也许闰秒被忽略或东西..

您重新启动MySQL服务器,以防万一调整服务器的时间,因为服务器开始了吗?

+0

查询需要0.0004秒,因此它不像查询提交时间和返回时间之间存在巨大差异。注意SYSDATE()与服务器的时间差约30秒。 编辑:电话正是“SELECT NOW()” – 2010-07-13 04:10:30

+0

@Slava,好的,你有没有尝试重新启动mysql服务器? – 2010-07-13 04:31:48