Как сгруппироваться к неделе в MySQL?

Да, я сказал бы, что Django является определенно способом пойти. Его модульная конструкция гарантирует, что Вы можете компоненты смешивания и подгонки (ORM, обрабатывая по шаблону механизм, отправку URL...) Вместо того, чтобы застрять с компонентом, который платформа предоставляет Вам, можно заменить его любой третьей стороной, эквивалентной вместо этого.

76
задан O. Jones 7 June 2017 в 14:45
поделиться

4 ответа

Разобрался ... это немного громоздко, но вот оно.

FROM_DAYS(TO_DAYS(TIMESTAMP) -MOD(TO_DAYS(TIMESTAMP) -1, 7))

И, если ваши бизнес-правила гласят, что ваши недели начинаются с понедельника, измените -1 на -2 .


Править

Прошли годы, и я наконец нашел время, чтобы это написать. http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

31
ответ дан 24 November 2019 в 11:10
поделиться

Я еще не написал достаточно большого проекта, чтобы потребовать систему сборки, поэтому достаточно простого build.sh .

Вы можете использовать $ GOROOT , $ GOARCH и $ GOOS , чтобы определить, что вам нужно:

jurily@jurily ~ $ env | grep GO
GOARCH=amd64
GOROOT=/home/jurily/go
GOOS=linux

Если для Go достаточно, мне достаточно .

если это то, что желательно. Подход YEAR () / WEEK () , первоначально предложенный в этом ответе, имеет эффект разделения агрегированных данных для таких «трансграничных» недель на две: одна с предыдущим годом, одна с новым годом.
Ежегодная чистая обрезка ценой до двух неполных недель, по одной на каждом конце, часто желательна в бухгалтерском учете и т.д., и для этого подход YEAR () / WEEK () лучше .

105
ответ дан 24 November 2019 в 11:10
поделиться

Вы можете получить объединенный номер года и недели (200945) с помощью функции YEARWEEK () . Если я правильно понимаю вашу цель, это должно позволить вам сгруппировать многолетние данные.

Если вам нужна фактическая временная метка для начала недели, это не так хорошо:

DATE_SUB( field, INTERVAL DAYOFWEEK( field ) - 1 DAY )

Для ежемесячного заказа вы можете рассмотреть LAST_DAY () функция - сортировка будет по последнему дню месяца, но это должно быть эквивалентно сортировке по первому дню месяца ... не так ли?

22
ответ дан 24 November 2019 в 11:10
поделиться

Просто добавьте это в избранное:

DATE_FORMAT($yourDate, \'%X %V\') as week

И

group_by(week);
4
ответ дан 24 November 2019 в 11:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: