MySQL 5.6 中计数函数的奇怪行为

Strange behavior with count function in MySQL 5.6

我有一个修复查询如下,我试图理解一些奇怪的行为是每当我 运行 这个查询在不同的时刻我得到不同的结果:( 134 , 143, 147, 152, 158 )

这是在创建时定义的 table:

`user_registration_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

select count(*) 来自 user_registration_timestamp >= "2016-10-03 12:33:26" 的用户 和 user_registration_timestamp < "2016-10-03 15:33:26";

为什么会这样?时间戳是固定的,它不是可变的,那么看到 MySQL 这种奇怪行为的原因是什么?

只要有新用户注册,您的查询就会 return 不同的计数。如果将 COUNT(*) 替换为 *.

,您可以找到详细信息

我的猜测是您尚未真正验证这一点,因为您假设 2016-10-03 15:33:26 是过去的日期,因此不可能有新用户。事实上,它是 当地时间 并且截至目前 (2016-10-03 14:30 UTC) 它是东部时区的过去日期,并且仍然会在其他任何地方出现。

如果 MySQL 服务器未配置为使用您的本地时区,但您的代码假定如此,那么它可能会造成混淆。