Mam kilka zamówień na produkty i próbuję pogrupować według daty i zsumować ilość dla tej daty. Jak mogę grupować według miesiąca / dnia / roku bez uwzględnienia części czasu?
3/8/2010 7:42:00
powinien być zgrupowany z 3/8/2010 4:15:00
Mam kilka zamówień na produkty i próbuję pogrupować według daty i zsumować ilość dla tej daty. Jak mogę grupować według miesiąca / dnia / roku bez uwzględnienia części czasu?
3/8/2010 7:42:00
powinien być zgrupowany z 3/8/2010 4:15:00
Odpowiedzi:
Przesyłaj / Konwertuj wartości na Date
typ dla swojej grupy według.
GROUP BY CAST(myDateTime AS DATE)
DateTime.Date
.
DateTime.Date
- Entity Framework:EntityFunctions.TruncateTime(myDateTime)
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
Lub w programie SQL Server 2008 i Date
nowszych wersjach można po prostu przesyłać według sugestii @Oded:
GROUP BY CAST(orderDate AS DATE)
GROUP BY DATE(date_time_column)
Oto przykład, którego użyłem, gdy potrzebowałem zliczyć liczbę rekordów dla określonej daty bez przedziału czasowego:
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)
Oto przykład, który działa dobrze w wyroczni
select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');
Uważam, że musisz pogrupować według, w tym dniu miesiąca. więc dlaczego nie skorzystać z funkcji TRUNK_DATE. Sposób działania opisano poniżej:
Group By DATE_TRUNC('day' , 'occurred_at_time')