2014-11-17 90 views
3

有没有办法让两个日期之间的所有日期,而无需使用任何MySQL表选择不使用一个表中的两个日期之间的所有日期(生成日期列表)

喜欢的东西:

SELECT date BETWEEN '2012-02-10' AND '2012-02-15' 

那会导致这样的:

out put date list 
2012-02-10 
... 
2012-02-15 
+0

在过程的循环将做到这一点的 –

+1

可能重复[获取日期的两个日期之间的列表(http://stackoverflow.com/questions/510012/get-a-list-of-dates -between-two-dates) – jpw

+0

检查这个答案我最近给我保存日期在tabe,你可以使用选择部分http://stackoverflow.com/questions/26944750/create-a-temporary-table-with-日期/ 26944861#26944861 –

回答

10

下面是该查询:
这个查询给出正确的结果在这两个数据库中: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') 
+0

hi @ kruti-patel,谢谢你的查询。我很轻松地创建了一个存储过程,我会请你解释这个查询背后的逻辑。先谢谢你。 – Matija

+0

hi @MatijaBaric,From子句将创建组合值,select子句将从startdate开始,并且每次将日期递增1,直到两个日期之间的差异未实现。 –

相关问题