当我对NOW()进行查询时,mysql返回的时间比服务器上当前时间大约-30秒。有任何想法吗?我试着查看配置文件但没有发现任何内容。我正在运行5.1.37版本
SELECT NOW()
答案 0 :(得分:5)
服务器的时区上下文和获取日期的上下文几乎肯定会对闰秒的存在有不同的看法。我怀疑差异将是24秒而不是30秒。
您可以通过在获得日期时调整时区来对此进行测试。在各种Unix上,你可以使用时区上的“right /”前缀来调整闰秒,看看它是如何改变的。
要解决此问题,您需要确保服务器在正确设置时区环境变量的情况下运行。
更新
错过了“windows”标签。 Windows时间定义为UTC而不是TAI,因此包含闰秒。如果差异真的是24s,那么你需要检查mysql是否没有应用闰秒调整以及Windows。
答案 1 :(得分:2)
您确定不需要30秒运行脚本然后检查服务器上的时间吗?
NOW()返回一个常量时间 表示时间 声明开始执行。
您需要将您的比较基于查询初始化而不是完成。
如果您需要使用SYSDATE()
来代替电话。
如果所有这些都很好并且您仍有问题,那么您肯定只使用SELECT NOW()
吗?如果您在某个地方的某个字段中添加了某个字段,那么它实际上可能会添加到NOW()
列而不是您认为的列。
如果所有这些仍在检查中,我认为可以通过浏览Server Timezone Support MySQL文章来付费。也许闰秒被忽略或者什么......
是否重启了MySQL服务器,以防自服务器启动以来调整服务器时间?