Tôi có một bảng có hai trường - datetime
và int
. Tôi muốn thực hiện một nhóm theo số datetime
chỉ vào ngày bỏ qua giờ và phút. Tuyên bố SELECT
phải trả về ngày lập bản đồ thành tổng của int trong một ngày.SQL Server GROUP BY datetime bỏ qua giờ phút và chọn với ngày và tổng giá trị
Trả lời
SELECT CAST(Datetimefield AS DATE) as DateField, SUM(intfield) as SumField
FROM MyTable
GROUP BY CAST(Datetimefield AS DATE)
Điều này sẽ chỉ hoạt động trong SQL Server 2008+ (khi kiểu dữ liệu ngày được giới thiệu). Nếu bạn đang ở trong năm 2005 hoặc trước đó, việc thay đổi dàn diễn viên để chuyển đổi (chuyển đổi (int, datetimefield), datetime) sẽ hoạt động. –
Tôi nhận được thông báo lỗi 'Loại ngày không phải là loại hệ thống được xác định'. – Steven
@Steven - sau đó xem nhận xét của Derek. Đây là lý do tại sao bạn nên đưa ** VERSION ** vào câu hỏi. – JNK
Khi anh không nói rõ phiên bản nào của SQL server ông sử dụng (date
loại không có sẵn trong năm 2005), người ta cũng có thể sử dụng
SELECT CONVERT(VARCHAR(10),date_column,112),SUM(num_col) AS summed
FROM table_name
GROUP BY CONVERT(VARCHAR(10),date_column,112)
- Tôi thích video này như là dữ liệu gõ và định dạng vẫn còn phù hợp với một kiểu dữ liệu thời gian ngày
;with cte as(
select
cast(utcdate as date) UtcDay, DATEPART(hour, utcdate) UtcHour, count(*) as Counts
from dbo.mytable cd
where utcdate between '2014-01-14' and '2014-01-15'
group by
cast(utcdate as date), DATEPART(hour, utcdate)
)
select dateadd(hour, utchour, cast(utcday as datetime)) as UTCDateHour, Counts
from cte
tôi đi nghiên cứu các tùy chọn mà tôi sẽ phải làm điều này, tuy nhiên, tôi tin rằng phương pháp tôi sử dụng là đơn giản nhất:
SELECT COUNT(*),
DATEADD(dd, DATEDIFF(dd, 0, date_field),0) as dtgroup
FROM TABLE
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, date_field),0)
ORDER BY dtgroup ASC;
Điều này sẽ làm việc trong bất kỳ phiên bản nào của SQL Server và nhanh hơn sử dụng chuyển đổi varchar. –
- 1. SQL Server Group By Tháng
- 2. MapReduce và SQL GROUP BY
- 3. SQL GROUP BY với "giá trị mặc định"
- 4. SQL Server loại bỏ SPACE trong GROUP BY
- 5. GROUP BY với tổng hợp và INNER JOIN
- 6. PostgreSQL tương đương với SQL Server GROUP BY VỚI ROLLUP
- 7. SQL: Sử dụng GROUP BY và MAX trên nhiều cột
- 8. Vấn đề SQL "GROUP BY"
- 9. Làm cách nào để có GROUP BY và COUNT bao gồm tổng số không?
- 10. Sử dụng SQL Server 2008 và SQL Server 2005 và ngày giờ
- 11. MySQL GROUP BY ngày khi sử dụng datetime
- 12. SQL Server: mệnh đề GROUP BY để có được giá trị bằng dấu phẩy
- 13. Thực hiện tổng hợp thông qua ngày và giờ trong SQL
- 14. Chỉ lấy ngày từ nhóm trong lựa chọn từ cột DateTime trong SQL Server
- 15. CakePHP và GROUP BY
- 16. T-SQL SELECT với GROUP BY id
- 17. Django: GROUP BY hai giá trị
- 18. ASP.NET SQL Server Chọn giá trị N trên cùng nhưng bỏ qua kết quả M
- 19. mysql nhận phút giữa một ngày giờ và NOW()
- 20. Xây phút và giờ
- 21. Máy chủ SQL: Sự khác biệt giữa PARTITION BY và GROUP BY
- 22. GROUP BY/tổng hợp chức năng nhầm lẫn trong SQL
- 23. SQL Server ORDER BY/WHERE với lồng nhau chọn
- 24. Nhận ngày giờ từ năm, ngày trong năm và giờ trong SQL Server 2008 R2
- 25. So sánh một chuỗi ngày với datetime trong SQL Server?
- 26. SQL select max (ngày) và giá trị tương ứng
- 27. Chỉ nhận giờ/phút của ngày giờ
- 28. Trình tự thực hiện mệnh đề Group By, Having và Where trong SQL Server là gì?
- 29. Nhận ngày và giờ khác nhau theo ngày, giờ, phút và giây trong Android
- 30. Vẽ giây, phút và giờ trên yAxis với Highcharts
chấp nhận một trong các câu trả lời sẽ tốt đẹp (* chỉ người hỏi có thể làm điều đó *) –