2016-04-28 54 views
2

這是我的sql查詢。它返回UTC時區的總行數。我想要計算不同時區中的completed_date字段。像America/Los_Angeles時區格式。我聽說我需要使用GROUP或DATE函數,但我不明白。如何在mysql中的不同時區中計算總行數

SELECT COUNT(*) 
    FROM `team_users` 
WHERE (`completed_date` BETWEEN '2016-04-27 00:00:00' AND '2016-04-27 23:59:59') 
+0

你有稱爲列'timezone'? – WillardSolutions

+0

將日期從本地時區轉換爲UTC,然後再將它們放入查詢中。 – Mike

回答

2

這應該轉換completed_date,這樣你可以用它您的日期比較:

SELECT COUNT(*) 
    FROM `team_users` 
    WHERE (CONVERT_TZ(`completed_date`, '+00:00', '-08:00') 
    BETWEEN '2016-04-27 00:00:00' AND '2016-04-27 23:59:59') 

使用時區偏移量是問題,因爲美洲/洛杉磯被-07:00一天,因爲夏令時,但另有-08:00

您可以使用UTC,然後爲太平洋標準時間或America/Los_Angeles如果你的系統已經配置爲使用命名時區:http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html

+0

'PST'是否在不加載MySQL中的時區數據的情況下工作? – Mike

+0

@Mike:可能不是:http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html – AbraCadaver

+0

如果你必須在MySQL中加載時區數據,無論如何可能是'America/Los_Angeles'應該一直工作,不是嗎? – Mike