Tôi có một loạt các đơn đặt hàng sản phẩm và tôi đang cố gắng nhóm theo ngày và tổng số lượng cho ngày đó. Làm cách nào tôi có thể nhóm theo tháng / ngày / năm mà không xem xét phần thời gian?
3/8/2010 7:42:00
nên được nhóm với 3/8/2010 4:15:00
Tôi có một loạt các đơn đặt hàng sản phẩm và tôi đang cố gắng nhóm theo ngày và tổng số lượng cho ngày đó. Làm cách nào tôi có thể nhóm theo tháng / ngày / năm mà không xem xét phần thời gian?
3/8/2010 7:42:00
nên được nhóm với 3/8/2010 4:15:00
Câu trả lời:
Truyền / Chuyển đổi các giá trị thành một Date
loại cho nhóm của bạn bằng cách.
GROUP BY CAST(myDateTime AS DATE)
DateTime.Date
.
DateTime.Date
- Khung thực thể:EntityFunctions.TruncateTime(myDateTime)
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
Hoặc trong SQL Server 2008 trở đi, bạn có thể chỉ cần chuyển Date
thành @Oded đề xuất:
GROUP BY CAST(orderDate AS DATE)
Trong Sql 2008 trước bằng cách lấy phần ngày:
GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
Đây là một ví dụ mà tôi đã sử dụng khi tôi cần đếm số lượng hồ sơ cho một ngày cụ thể mà không có phần thời gian:
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)
Dưới đây là ví dụ hoạt động tốt trong nhà tiên tri
select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');
Tôi tin rằng bạn cần phải nhóm theo, vào ngày đó trong tháng. vậy tại sao không sử dụng các hàm TRUNK_DATE. Cách thức hoạt động được mô tả dưới đây:
Group By DATE_TRUNC('day' , 'occurred_at_time')