Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL+;PHP:按调整日期分组_Php_Mysql_Timezone_Utc - Fatal编程技术网

MySQL+;PHP:按调整日期分组

MySQL+;PHP:按调整日期分组,php,mysql,timezone,utc,Php,Mysql,Timezone,Utc,我有个有趣的案子。我有一组日期时间,我需要找到每天的最小值。数据库将它们存储为UTC,但需要根据(1)本地时区和(2)自定义“我的一天从XX:XX开始”字段对它们进行分组 例如,如果以下是我的数据集: +----------+---------------------+ | id | start | +----------+---------------------+ | 1 | 2015-04-26 16:00:00 | +--------

我有个有趣的案子。我有一组日期时间,我需要找到每天的最小值。数据库将它们存储为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小时或+450分钟)和使用
DATE\u ADD()一样简单

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

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

不,MySQL可以为你计算时区。任何时候,当您看到一个GROUPBY子句没有聚合函数时,警报就会响起。这是一个简化的示例。实际上,我有一个
WHERE
子句,并且还通过第二列(此处未列出)进行分组。你说的“聚合函数”是指其他东西吗?你能举个例子吗?还有,为什么(以及如何)我可以让MySQL整理时区的东西?(我的服务器都是基于UTC的;查询用户的时区存储在一个MySQL字段中。)