Đây là cách tôi làm điều đó. Nó tạo ra một phạm vi ngày từ 2011-01-01 đến 2011-12-31 :
select
date_format(
adddate('2011-1-1', @num:[email protected]+1),
'%Y-%m-%d'
) date
from
any_table,
(select @num:=-1) num
limit
365
-- use limit 366 for leap years if you're putting this in production
Yêu cầu duy nhất là số hàng trong any_table phải lớn hơn hoặc bằng kích thước của phạm vi cần thiết (> =365 hàng trong ví dụ này). Bạn rất có thể sẽ sử dụng điều này như một truy vấn con của toàn bộ truy vấn của mình, vì vậy trong trường hợp của bạn là any_table có thể là một trong những bảng bạn sử dụng trong truy vấn đó.