2013-02-13 48 views
21

Tôi có một datetime gọi activity_dt và các dữ liệu trông như thế này:DateTime nhóm theo ngày và giờ

2/5/2013 9:24:00 AM 
2/7/2013 7:17:00 AM 

Làm thế nào để tôi nhóm theo ngày và giờ?

+1

bạn đã sử dụng những gì? –

Trả lời

47

SQL Server:

SELECT [activity_dt], count(*) 
FROM table1 
GROUP BY DATEPART(day, [activity_dt]), DATEPART(hour, [activity_dt]); 

Oracle:

SELECT [activity_dt], count(*) 
FROM table1 
GROUP BY TO_CHAR(activity_dt, 'DD'), TO_CHAR(activity_dt, 'hh'); 

MySQL:

SELECT [activity_dt], count(*) 
FROM table1 
GROUP BY hour(activity_dt) , day(activity_dt) 
+1

Tôi đang sử dụng mysql. Có phương pháp nào để tôi hiển thị ngày tháng không? Ví dụ: 2/5/2013 – Yeo

+0

bạn có định dạng ngày tháng 2/5/2013 không? CHỌN DATE_FORMAT (activity_dt, '% e /% c /% Y') –

+0

Nó nói lỗi cú pháp – Yeo

1
SELECT [activity_dt], COUNT(*) as [Count] 
    FROM 
(SELECT dateadd(hh, datediff(hh, '20010101', [activity_dt]), '20010101') as [activity_dt] 
    FROM table) abc 
GROUP BY [activity_dt] 
7

Sử dụng MySQL Tôi thường làm điều đó theo cách đó:

SELECT count(id), ... 
FROM quote_data 
GROUP BY date_format(your_date_column, '%Y%m%d%H') 
order by your_date_column desc; 

Hoặc trong ý tưởng tương tự, nếu bạn cần để sản xuất các ngày/giờ:

SELECT count(id) , date_format(your_date_column, '%Y-%m-%d %H') as my_date 
FROM your_table 
GROUP BY my_date 
order by your_date_column desc; 

Nếu bạn chỉ định một chỉ mục trên cột ngày của bạn, MySQL sẽ có thể sử dụng nó để tăng tốc độ điều một ít.

+0

Tôi phải thay thế% h bằng% H, sắp xếp với 0-24 hoạt động tốt hơn cho tôi thay vì 0-12 và 0-12. – Melvin

+0

@Melvin Bạn nói đúng, tôi đã sửa lại câu trả lời của mình. – Simon

+0

Chỉ cần lưu ý về việc sử dụng chỉ mục. Mặc dù date_format cho phép chỉ mục được sử dụng, chỉ mục sẽ chỉ được sử dụng tối ưu (quét chỉ mục lỏng lẻo) khi sử dụng các hàm tổng hợp hạn chế/cụ thể. Nói chung, chỉ có MIN() và MAX() được áp dụng cho một cột duy nhất cho phép quét chỉ mục và cũng có các tập hợp khác miễn là chúng chỉ định từ khóa DISTINCT. Nguồn: [link] (http://dev.mysql.com/doc/refman/5.7/en/group-by-optimization.html) – JavoSN

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