horas - MySQL/SQL: agrupar por fecha solo en una columna de fecha y hora
agrupar por rango de horas sql (4)
Tener una tabla con una columna como: mydate DATETIME
...
Tengo una consulta como:
SELECT SUM(foo), mydate FROM a_table GROUP BY a_table.mydate;
Esto se agrupará por datetime
y datetime
completa, incluidas horas y minutos. Deseo agrupar al grupo, solo por la fecha YYYY/MM/DD
no por YYYY/MM/DD/HH/mm
.
Alguien sabe cómo hacer esto? Todavía puedo hacerlo (como soy ATM), dinámicamente en mi código, pero estoy limpiando el código de la basura y esto puede hacerse a través del SQL. No puedo averiguar cómo :(.
Descubrí que necesitaba agruparme por mes y año, por lo que ninguna de las anteriores funcionó para mí. En cambio, utilicé date_format
SELECT date
FROM blog
GROUP BY DATE_FORMAT(date, "%m-%y")
ORDER BY YEAR(date) DESC, MONTH(date) DESC
Echa el datetime a una fecha, luego GROUP BY usando esta sintaxis:
SELECT SUM(foo), DATE(mydate) FROM a_table GROUP BY DATE(a_table.mydate);
O puede agrupar por el alias como @ orlandu63 sugirió:
SELECT SUM(foo), DATE(mydate) DateOnly FROM a_table GROUP BY DateOnly;
Aunque no creo que vaya a hacer ninguna diferencia en el rendimiento, es un poco más claro.
O:
SELECT SUM(foo), DATE(mydate) mydate FROM a_table GROUP BY mydate;
Más eficiente (creo). Porque no tienes que lanzar mydate dos veces por fila.
SELECT SUM(No), HOUR(dateofissue)
FROM tablename
WHERE dateofissue>=''2011-07-30''
GROUP BY HOUR(dateofissue)
¡Dará la hora por suma de un día en particular!