有没有办法让两个日期之间的所有日期,而无需使用任何MySQL表选择不使用一个表中的两个日期之间的所有日期(生成日期列表)
喜欢的东西:
SELECT date BETWEEN '2012-02-10' AND '2012-02-15'
那会导致这样的:
out put date list
2012-02-10
...
2012-02-15
有没有办法让两个日期之间的所有日期,而无需使用任何MySQL表选择不使用一个表中的两个日期之间的所有日期(生成日期列表)
喜欢的东西:
SELECT date BETWEEN '2012-02-10' AND '2012-02-15'
那会导致这样的:
out put date list
2012-02-10
...
2012-02-15
下面是该查询:
这个查询给出正确的结果在这两个数据库中:MariaDB
& MySQL
。
SELECT ADDDATE('2012-02-10', INTERVAL @i:[email protected]+1 DAY) AS DAY
FROM (
SELECT a.a
FROM (SELECT 0 AS a 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) AS a
CROSS JOIN (SELECT 0 AS a 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) AS b
CROSS JOIN (SELECT 0 AS a 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) AS c
) a
JOIN (SELECT @i := -1) r1
WHERE
@i < DATEDIFF('2012-02-15', '2012-02-10')
hi @ kruti-patel,谢谢你的查询。我很轻松地创建了一个存储过程,我会请你解释这个查询背后的逻辑。先谢谢你。 – Matija
hi @MatijaBaric,From子句将创建组合值,select子句将从startdate开始,并且每次将日期递增1,直到两个日期之间的差异未实现。 –
在过程的循环将做到这一点的 –
可能重复[获取日期的两个日期之间的列表(http://stackoverflow.com/questions/510012/get-a-list-of-dates -between-two-dates) – jpw
检查这个答案我最近给我保存日期在tabe,你可以使用选择部分http://stackoverflow.com/questions/26944750/create-a-temporary-table-with-日期/ 26944861#26944861 –