MySQL+;PHP:按调整日期分组
我有个有趣的案子。我有一组日期时间,我需要找到每天的最小值。数据库将它们存储为UTC,但需要根据(1)本地时区和(2)自定义“我的一天从XX:XX开始”字段对它们进行分组 例如,如果以下是我的数据集:MySQL+;PHP:按调整日期分组,php,mysql,timezone,utc,Php,Mysql,Timezone,Utc,我有个有趣的案子。我有一组日期时间,我需要找到每天的最小值。数据库将它们存储为UTC,但需要根据(1)本地时区和(2)自定义“我的一天从XX:XX开始”字段对它们进行分组 例如,如果以下是我的数据集: +----------+---------------------+ | id | start | +----------+---------------------+ | 1 | 2015-04-26 16:00:00 | +--------
+----------+---------------------+
| 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小时或+450分钟)和使用DATE\u ADD()一样简单
这是正确/最好的方法吗?
SELECT * FROM records GROUP BY DATE(DATE_ADD(start,INTERVAL 450 MINUTE));
不,MySQL可以为你计算时区。任何时候,当您看到一个GROUPBY子句没有聚合函数时,警报就会响起。这是一个简化的示例。实际上,我有一个WHERE
子句,并且还通过第二列(此处未列出)进行分组。你说的“聚合函数”是指其他东西吗?你能举个例子吗?还有,为什么(以及如何)我可以让MySQL整理时区的东西?(我的服务器都是基于UTC的;查询用户的时区存储在一个MySQL字段中。)