如何在mysql中的不同时区中计算总行数

问题描述:

这是我的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

这应该转换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