我有一个有趣的案例。我有一组日期时间,我需要找到每天的最小值。数据库将它们存储为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));