Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да групирате по седмица в MySQL?

Можете да използвате и двете YEAR(timestamp) и WEEK(timestamp) и използвайте и двата израза в SELECT и GROUP BY клауза.

Не прекалено елегантно, но функционално...

И, разбира се, можете да комбинирате тези две части за дата и в един израз, т.е. нещо като

SELECT CONCAT(YEAR(timestamp), '/', WEEK(timestamp)), etc...
FROM ...
WHERE ..
GROUP BY CONCAT(YEAR(timestamp), '/', WEEK(timestamp))

Редактиране :Както Мартин посочва можете също да използвате YEARWEEK(mysqldatefield) функция, въпреки че изходът й не е толкова удобен за очите, колкото по-дългата формула по-горе.

Редактиране 2 [3 1/2 години по-късно!]:
YEARWEEK(mysqldatefield) с незадължителния втори аргумент (mode ) настроен на 0 или 2 вероятно е най-добрият начин за обобщаване чрез завършено седмици (т.е. включително за седмици, които преминават през 1 януари), ако това е желаното. YEAR() / WEEK() подходът, първоначално предложен в този отговор, има ефект на разделяне на обобщените данни за такова „преминаване“ седмици на две:една с предишната година, една с новата година.
Чисто изрязване всяка година, с цената на до две частични седмици, една в двата края, често е желана в счетоводството и т.н. и за това YEAR() / WEEK() подходът е по-добър.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php качване на файл, как да ограничите типа на качване на файлове

  2. Можете ли да разделите/раздуете поле в MySQL заявка?

  3. Създайте нов потребител в MySQL и му дайте пълен достъп до една база данни

  4. Наблюдение на вашите бази данни с MySQL Enterprise Monitor

  5. Как да повторя идентификатор на ресурс #6 от отговор на MySql в PHP?