Tengo un montón de pedidos de productos e intento agrupar por fecha y sumar la cantidad para esa fecha. ¿Cómo puedo agrupar por mes / día / año sin tener en cuenta la parte de tiempo?
3/8/2010 7:42:00
debe agruparse con 3/8/2010 4:15:00
Tengo un montón de pedidos de productos e intento agrupar por fecha y sumar la cantidad para esa fecha. ¿Cómo puedo agrupar por mes / día / año sin tener en cuenta la parte de tiempo?
3/8/2010 7:42:00
debe agruparse con 3/8/2010 4:15:00
Respuestas:
Transmitir / Convertir los valores a un Date
tipo para su grupo por.
GROUP BY CAST(myDateTime AS DATE)
DateTime.Date
.
DateTime.Date
- Entity Framework:EntityFunctions.TruncateTime(myDateTime)
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
O en SQL Server 2008 en adelante, simplemente podría Date
enviar como se sugirió @Oded:
GROUP BY CAST(orderDate AS DATE)
En pre Sql 2008 Al sacar la parte de fecha:
GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
GROUP BY DATE(date_time_column)
Aquí hay un ejemplo que usé cuando necesitaba contar la cantidad de registros para una fecha en particular sin la porción de tiempo:
select count(convert(CHAR(10), dtcreatedate, 103) ),convert(char(10), dtcreatedate, 103)
FROM dbo.tbltobecounted
GROUP BY CONVERT(CHAR(10),dtcreatedate,103)
ORDER BY CONVERT(CHAR(10),dtcreatedate,103)
Aquí está el ejemplo funciona bien en Oracle
select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');
Creo que debes agruparte por ese día del mes del año. Entonces, ¿por qué no usar las funciones TRUNK_DATE? La forma en que funciona se describe a continuación:
Group By DATE_TRUNC('day' , 'occurred_at_time')