MySQL + PHP: группировка по РЕГУЛИРОВАННОЙ дате

У меня интересный случай. У меня есть набор дат и мне нужно найти минимум для каждого дня. База данных хранит их как 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 |
+----------+---------------------+

Обратите внимание, что время указано для UTC для «первых» записей дня, которые начинаются «в 3:30 утра по Нью-Йорку или после него».

В настоящее время мой запрос выглядит примерно так:

SELECT * FROM records GROUP BY DATE(start);

я делать использовать PHP, так что это так же просто, как вычисление дельты времени (например: UTC + 4 + 3: 30 => +7,5 часов ИЛИ ЖЕ +450 минут) и используя DATE_ADD()?

Это правильный / лучший способ сделать это?

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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]