這是我的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')
這是我的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')
這應該轉換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
'PST'是否在不加載MySQL中的時區數據的情況下工作? – Mike
@Mike:可能不是:http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html – AbraCadaver
如果你必須在MySQL中加載時區數據,無論如何可能是'America/Los_Angeles'應該一直工作,不是嗎? – Mike
你有稱爲列'timezone'? – WillardSolutions
將日期從本地時區轉換爲UTC,然後再將它們放入查詢中。 – Mike