Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Группировка даты в Mysql
 
 автор: Валерий   (09.02.2010 в 15:06)   письмо автору
 
 

Вопрос в следующем
есть таблица, в ней есть поле `timestamp`
нужно выбрать данные с группировкой по каждому промежутку времени с 19:00 по 9:00 следующего дня. т.е. как бы выборка по дате, но не совсем. можно такое сделать?

  Ответить  
 
 автор: Trianon   (09.02.2010 в 16:10)   письмо автору
 
   для: Валерий   (09.02.2010 в 15:06)
 

может не с группировкой, а с фильтрацией?

  Ответить  
 
 автор: Валерий   (09.02.2010 в 16:14)   письмо автору
 
   для: Trianon   (09.02.2010 в 16:10)
 

ммм...
мне нужно одним запросом получить количество записей с 19:00 по 9:00, т.е. можно сказать, что для каждой ночи.

  Ответить  
 
 автор: Trianon   (09.02.2010 в 17:07)   письмо автору
 
   для: Валерий   (09.02.2010 в 16:14)
 

Тогда это агрегатный COUNT() запрос с группировкой по дате и фильтрацией по интервалу времени.

  Ответить  
 
 автор: Валерий   (09.02.2010 в 17:18)   письмо автору
 
   для: Trianon   (09.02.2010 в 17:07)
 

пример можно, если не затруднит, конечно? )

  Ответить  
 
 автор: Trianon   (09.02.2010 в 17:22)   письмо автору
 
   для: Валерий   (09.02.2010 в 17:18)
 

Пример можно всегда. Даже нужно. Напишите пример - разберем ошибки.

  Ответить  
 
 автор: Валерий   (09.02.2010 в 17:37)   письмо автору
 
   для: 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`

вот что осилил :)

  Ответить  
 
 автор: Валерий   (11.02.2010 в 12:10)   письмо автору
 
   для: Валерий   (09.02.2010 в 17:37)
 

ну подскажите что-нибудь, хочется обойтись одним запросом :)

  Ответить  
 
 автор: Trianon   (11.02.2010 в 22:46)   письмо автору
 
   для: Валерий   (09.02.2010 в 17:37)
 

Вам нужно применить DATE() для вычисления `day` и TIME() в разделе WHERE
И всё пойдет само собой.
Если ночной интервал рвет сутки, метку времени можно сместить предварительно на нужное число часов (с помощью - INTERVAL n HOURS).
Это несовсем корректно при переходе с летнего на зимнее время и назад, но в целом должно работать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования