|
|
|
| Вопрос в следующем
есть таблица, в ней есть поле `timestamp`
нужно выбрать данные с группировкой по каждому промежутку времени с 19:00 по 9:00 следующего дня. т.е. как бы выборка по дате, но не совсем. можно такое сделать? | |
|
|
|
|
|
|
|
для: Валерий
(09.02.2010 в 15:06)
| | может не с группировкой, а с фильтрацией? | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 16:10)
| | ммм...
мне нужно одним запросом получить количество записей с 19:00 по 9:00, т.е. можно сказать, что для каждой ночи. | |
|
|
|
|
|
|
|
для: Валерий
(09.02.2010 в 16:14)
| | Тогда это агрегатный COUNT() запрос с группировкой по дате и фильтрацией по интервалу времени. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 17:07)
| | пример можно, если не затруднит, конечно? ) | |
|
|
|
|
|
|
|
для: Валерий
(09.02.2010 в 17:18)
| | Пример можно всегда. Даже нужно. Напишите пример - разберем ошибки. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 17:22)
| | ну вот
SELECT
DAYOFMONTH(FROM_UNIXTIME(`timestamp`)) AS `day`,
COUNT(*) as `count` FROM `table`
WHERE
UNIX_TIMESTAMP(CONCAT('2009-08-',DAYOFMONTH(FROM_UNIXTIME(`timestamp`)),' 19:00:00')) AND
UNIX_TIMESTAMP(DATE_ADD(CONCAT('2009-08-',DAYOFMONTH(FROM_UNIXTIME(`timestamp`)),' 19:00:00')), INTERVAL 12 HOURS)
GROUP BY `day`
|
вот что осилил :) | |
|
|
|
|
|
|
|
для: Валерий
(09.02.2010 в 17:37)
| | ну подскажите что-нибудь, хочется обойтись одним запросом :) | |
|
|
|
|
|
|
|
для: Валерий
(09.02.2010 в 17:37)
| | Вам нужно применить DATE() для вычисления `day` и TIME() в разделе WHERE
И всё пойдет само собой.
Если ночной интервал рвет сутки, метку времени можно сместить предварительно на нужное число часов (с помощью - INTERVAL n HOURS).
Это несовсем корректно при переходе с летнего на зимнее время и назад, но в целом должно работать. | |
|
|
|