2010-02-13 35 views
7

tôi có một loạt các dữ liệu ngày trong một bảng mysql như thế này:Chọn nhóm ngày/giờ trong MySQL được phân nhóm theo giờ

2010-02-13 1:00:00, "soma data" 
2010-02-13 1:25:00, "soma data" 
2010-02-13 1:37:00, "soma data" 
2010-02-13 2:12:00, "soma data" 

Tôi muốn chọn một báo cáo trong đó cho thấy các dữ liệu được nhóm theo giờ, ví dụ :

On Feb 13, during the hour from 1:00 pm to 1:59 pm, there were 3 data points. 
On Feb 13, during the hour from 2:00 pm to 2:59 pm, there was 1 data points. 
... 

Về cơ bản tôi muốn báo cáo số lượng tích lũy hồ sơ xảy ra trong mỗi giờ trong ngày. Vì vậy, kết quả cuối cùng sẽ cho tôi một báo cáo nói rằng 10 ngày, chia ra trong gia số 24 giờ, vì vậy tôi có thể xem có bao nhiêu dữ liệu có trong bất kỳ giờ nhất định vào bất kỳ ngày nào.

TIA, Hy vọng bạn có thể trợ giúp!

Trả lời

9

Bạn có thể muốn sử dụng mệnh đề GROUP BY như trong truy vấn sau đây:

SELECT 
    COUNT(*), 
    YEAR(dateTimeField), 
    MONTH(dateTimeField), 
    DAY(dateTimeField), 
    HOUR(dateTimeField) 
FROM 
    yourTable 
WHERE 
    dateTimeField >= '2010-02-04 00:00:00' AND 
    dateTimeField < '2010-02-14 00:00:00' 
GROUP BY 
    YEAR(dateTimeField), 
    MONTH(dateTimeField), 
    DAY(dateTimeField), 
    HOUR(dateTimeField); 

Bạn cũng có thể muốn kiểm tra tài liệu MySQL để tham khảo thêm về hàm ngày tháng và thời gian:

+0

Vâng, điều đó đã xảy ra !!!! – Alexia

+0

làm việc cho tôi và tiết kiệm rất nhiều thời gian. thanx! – alpera

3
SELECT HOUR(datetime), COUNT(*) 
FROM table 
GROUP BY HOUR(datetime); 

Y Bạn sẽ nhận được hai trường: giờ và số sự kiện trong giờ đó.

+0

Sự cố với truy vấn này là bạn không thể mở rộng báo cáo trong vòng 10 ngày. –

+0

Rất tiếc, tính năng này không hoạt động - chỉ hiển thị giờ trong một ngày, không thể kéo dài theo thời gian. – Alexia

Các vấn đề liên quan