我如何显示整个月的所有日期,其中月份是查询参数(例如 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)
有什么想法吗?谢谢你的帮助
如果您需要生成两个日期之间的所有日期的列表,您可以借助计数(数字)表来完成此操作。您可以轻松创建这样一个
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演示