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, я просто не могу узнать, как: (.
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