MySQL + PHP:按调整日期分组

时间:2015-04-27 20:31:39

标签: php mysql timezone utc

我有一个有趣的案例。我有一组日期时间,我需要找到每天的最小值。数据库将它们存储为UTC,但需要根据(1)本地时区和(2)自定义“我的一天从XX:XX开始”字段进行分组。

例如,如果以下是我的数据集:

+----------+---------------------+
|       id | start               |
+----------+---------------------+
|        1 | 2015-04-26 16:00:00 |
+----------+---------------------+
|        2 | 2015-04-26 17:00:00 |
+----------+---------------------+
|        3 | 2015-04-26 20:00:00 |
+----------+---------------------+
|        4 | 2015-04-27 01:00:00 |
+----------+---------------------+
|        5 | 2015-04-27 16:25:00 |
+----------+---------------------+
|        6 | 2015-04-27 16:35:00 |
+----------+---------------------+
|        7 | 2015-04-28 02:00:00 |
+----------+---------------------+

如果查询的人在纽约(UTC + 4),并说他们的一天从“凌晨3:30”开始(UTC + 4 + 3:30),那么我需要以下结果:

+----------+---------------------+
|       id | start               |
+----------+---------------------+
|        2 | 2015-04-26 17:00:00 |
+----------+---------------------+
|        6 | 2015-04-27 16:35:00 |
+----------+---------------------+

请注意,纽约时间凌晨3:30开始“当天或之后”的“第一”记录的UTC时间是

目前我的查询看起来像这样:

SELECT * FROM records GROUP BY DATE(start);

使用PHP,这就像计算时间增量一样简单(例如:UTC + 4 + 3:30 => +7.5小时 OR +450分钟)并使用DATE_ADD()

这是正确/最好的方法吗?

SELECT * FROM records GROUP BY DATE(DATE_ADD(start,INTERVAL 450 MINUTE));

0 个答案:

没有答案