| |
|
|
| | Вопрос в следующем
есть таблица, в ней есть поле `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).
Это несовсем корректно при переходе с летнего на зимнее время и назад, но в целом должно работать. | |
| |
|
|