2013-08-12 73 views
9

Tôi đã có một bảng trong MySQL cho thấy số giờ đăng nhập hàng ngày. Tôi đang cố gắng xây dựng chế độ xem cho phép tôi nhanh chóng nhóm dữ liệu của mình theo các khối/phạm vi ngày. Trường hợp đơn giản nhất sẽ là trên cơ sở hàng tháng mà sẽ không khó khăn. Tôi chỉ có thể chọn ngày là "% y-% m" và sau đó nhóm theo cột đó.Truy vấn MySQL để nhóm theo phạm vi ngày?

Ex:

select time_logged, date_format(start_date, '%Y-%m') AS `month_logged` 
from work_log 
group by month_logged 

đó làm việc tốt nếu tôi chỉ nhóm theo tháng. Nhưng vấn đề của tôi là tôi cần phải nhóm từ ngày 13 của tháng đến ngày 12 của tháng tiếp theo (ví dụ: ngày 13 tháng 7 đến ngày 12 tháng 8, ngày 13 tháng 8 đến ngày 12 tháng 9, v.v.).

Có cách nào dễ dàng để thực hiện điều gì đó như vậy trong một truy vấn/chế độ xem không? Tôi dường như không thể tìm ra một truy vấn phù hợp với nhu cầu của tôi, thậm chí chơi với các kết hợp ngày tháng khác nhau.

+0

Bạn chỉ cần các dữ liệu liên quan đến 13 hoặc 12? hoặc bạn chỉ muốn GROUP BY ngày này? – Hituptony

Trả lời

20

Subtract 13 ngày và làm các nhóm bạn đang làm gì bây giờ:

select time_logged, 
     date_format(start_date - interval 12 day, '%Y-%m') AS `month_logged` 
from work_log 
group by month_logged; 
+0

12 ngày tôi nghĩ, nhưng +1 :) –

+0

Smack. Tất nhiên. Điều đó chắc chắn sẽ dễ nhất. Cuối cùng tôi đã làm cho nó hoạt động với một mệnh đề phức tạp nếu điều này, nhưng điều này đơn giản và rõ ràng hơn nhiều! Cảm ơn! –

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