MySQL/ SQL: группировать по дате только в столбце Datetime



имея таблицу со столбцом, как:mydate DATETIME ...



у меня есть такой запрос:



SELECT SUM(foo), mydate FROM a_table GROUP BY a_table.mydate;


это будет группа по полной datetime, включая часы и минуты. Я хочу сделать группу по, только по дате YYYY/MM/DD а не YYYY/MM/DD/HH/mm.



кто-нибудь знает, как это сделать? Я все еще могу это сделать (поскольку я atm), динамически в моем коде, но я очищаю код корзины, и это можно сделать через SQL, я просто не могу узнать, как: (.

428   4  

4 ответов:

приведите datetime к дате, а затем сгруппируйте с помощью этого синтаксиса:

SELECT SUM(foo), DATE(mydate) FROM a_table GROUP BY DATE(a_table.mydate);

или вы можете сгруппироваться по псевдониму, как предложил @orlandu63:

SELECT SUM(foo), DATE(mydate) DateOnly FROM a_table GROUP BY DateOnly;

хотя я не думаю, что это будет иметь какое-либо значение для производительности, это немного яснее.

или:

SELECT SUM(foo), DATE(mydate) mydate FROM a_table GROUP BY mydate;

более эффективно (я думаю.) Потому что вам не нужно бросать mydate дважды за строку.

Я обнаружил, что мне нужно было сгруппироваться по месяцам и годам, поэтому ни один из вышеперечисленных не работал для меня. Вместо этого я использовал date_format

SELECT date
FROM blog 
GROUP BY DATE_FORMAT(date, "%m-%y")
ORDER BY YEAR(date) DESC, MONTH(date) DESC 
SELECT SUM(No), HOUR(dateofissue) 
FROM tablename 
WHERE dateofissue>='2011-07-30' 
GROUP BY HOUR(dateofissue)

это даст час по сумме от конкретного дня!

Comments

    Ничего не найдено.