一千萬個為什麽

搜索

如何獲取MySQL中最後一小時的#entries,更正時區?

我將活動條目存儲在MySQL表中。該表有一個date_created字段,類型為timestamp,通過PHP我插入基於GMT的活動條目:

$timestamp = gmdate("Y-m-d H:i:s", time());

這很好用。在我的客戶端,我在GMT + 2上。如果這是16:00,我插入一個條目,它將在14:00存儲在MySQL中。這是我猜的預期。我的

現在我想在過去一小時內獲取MySQL的活動條目數。我正在使用以下查詢:

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 HOUR)

沒有返回任何內容,因為CURRENT_TIMESTAMP使用MySQL時區設置,設置為SYSTEM,設置為GMT + 2。我想我要找的是MySQL中的GMT_CURRENTTIMESTAMP,有這樣的事嗎?

最佳答案

UTC_TIMESTAMP() function,以上下文敏感的方式返回當前UTC時間戳。您可以使用它代替 CURRENT_TIMESTAMP

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR);

轉載註明原文: 如何獲取MySQL中最後一小時的#entries,更正時區?