2016-07-09 2 views
0

Я планирую использовать этот запрос для группировки даты на 3 дня. Я хочу, чтобы поле daygroup непрерывно увеличивалось, но оно сбрасывается каждый месяц.Записи группы MySQL в течение 3 дней с учетом следующего месяца

SELECT id, floor(day(date)/3) as daygroup, date 
FROM mytable order by id, date 

Результат:

id | daygroup | date 
1 | 8  | 2016-05-24 00:00:00 
1 | 8  | 2016-05-25 00:00:00 
1 | 8  | 2016-05-26 00:00:00 
1 | 9  | 2016-05-27 00:00:00 
1 | 9  | 2016-05-28 00:00:00 
1 | 9  | 2016-05-29 00:00:00 
1 | 10  | 2016-05-30 00:00:00 
1 | 10  | 2016-05-31 00:00:00 
1 | 3  | 2016-07-09 00:00:00 
1 | 3  | 2016-07-10 00:00:00 
1 | 3  | 2016-07-11 00:00:00 

Обратите внимание, что после этой записи 1 | 10 | 2016-05-31 00:00:00 в daygroup поле будет сброшена 3. Я считаю, что это из-за функции MySQL day()

ли вы, ребята, есть какие-либо обходной путь решения для этого?

+1

Но ваши данные непрерывно. Я имею в виду 2016-05-31, 2016-06-01 или 2016-05-31, 2016-07-09. –

+0

@TharsanSivakumar хорошо пункт. прямо сейчас. он не является непрерывным, он пропускает. Я могу сделать это непрерывным, если это поможет. Предположим, что он непрерывный, есть ли у вас какие-либо предлагаемые решения? – silverstrike

+0

Думаю, ответ дан ниже, вам может понадобиться получить день в году, используя функцию DAYOFTEAR –

ответ

1

Как сказал here

MySQL DAY() возвращает день месяца для указанной даты.

Таким образом, вы должны использовать DAYOFYEAR(date) вместо

Возвращает день года для даты, в диапазоне от 1 до 366.

+0

спасибо! это может помочь. я попробую, и я могу найти обходное решение – silverstrike

Смежные вопросы