MySQL 显示整个月的所有日期

emp*_*ing 7 mysql date

我如何显示整个月的所有日期,其中月份是查询参数(例如 1 到 3 之间的月份),然后输出此查询将显示从 1 月第一个日期到 3 月最后一个日期的日期。也许预览如下。

2013-01-01
2013-01-02
2013-01-03
..
..
2013-02-28
..
2013-03-31
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?谢谢你的帮助

pet*_*erm 1

如果您需要生成两个日期之间的所有日期的列表,您可以借助计数(数字)表来完成此操作。您可以轻松创建这样一个

CREATE TABLE tally (n int not null primary key);

INSERT INTO tally
SELECT a.N + b.N * 10 + c.N * 100 + 1 n
  FROM 
 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c
ORDER BY n;
Run Code Online (Sandbox Code Playgroud)

现在要创建一月第一天到三月最后一天之间所有日期的列表,您可以这样做

SELECT '2013-01-01' + INTERVAL t.n - 1 DAY day
  FROM tally t
 WHERE t.n <= DATEDIFF(LAST_DAY('2013-03-01'), '2013-01-01') + 1
Run Code Online (Sandbox Code Playgroud)

这是SQLFiddle演示