2016-10-03 40 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? - 我增加了更多信息。 –