rango por horas hora fechas comparar agrupar sql mysql

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!