2016-10-03 28 views
0

我有一个修复查询如下,我试图了解它的一些奇怪的行为是每当我在不同的时刻运行此查询我得到不同的结果:(134,143,147,152 ,158)奇怪的行为与MySQL中的计数功能5.6

这是如何在创建的表定义:

`user_registration_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 

SELECT COUNT(*)从用户那里user_registration_timestamp> = “2016年10月3日12时33分26秒” 和 user_registration_timestamp <“ 2016-10-03 15:33:26“;

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

+0

确定性查询可以返回不同的数据集,如果底层数据发生变化,但我想你不会问这是否是这种情况... –

+0

@ÁlvaroGonzález当user_register_timestamp已经通过了特定的时间? –

+0

明白了。检查我的答案。 –

回答

0

只要新用户注册,您的查询就会返回不同的计数。如果您将COUNT(*)替换为*,则可以查找详细信息。

我的猜测是,你还没有真正确认,因为你认为2016-10-03 15:33:26是过去的日期,因此不可能有新用户。事实上,这是一个当地时间和截至目前(2016-10-03 14:30 UTC)它是在东部时区过去的日期,而且还会到其他地方。

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

+0

thx为你的答案,但我想确定这是否发生,是否有任何评论在MySQL吨力东ts?我该怎么做? –

+0

[如何设置mysql的时区?](http://stackoverflow.com/questions/930900/how-to-set-time-zone-of-mysql#19069310) –

+0

不,如何强制我的查询使用本地ts? - 我增加了更多信息。 –