mysql - 选择不使用表格的两个日期之间的所有日期(生成日期列表)

标签 mysql

有没有办法在不使用任何 MySQL 表的情况下获取两个日期之间的所有日期

类似于:

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

这将导致:

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

最佳答案

查询如下:
此查询在两个数据库中都给出了正确的结果:MariaDBMySQL

SELECT ADDDATE('2012-02-10', INTERVAL @i:=@i+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')

关于mysql - 选择不使用表格的两个日期之间的所有日期(生成日期列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26969081/

相关文章:

mysql - 如何使用子选择更新表

php - 如何避免 MySQL InnoDB 中的竞争条件?

php - 如何将javascript变量传递给数据库

MySql 源文件 : failed to open file error 2

php - 恢复一个mysql数据库备份?

javascript - 使用javascript动态插入新行,但如何在php/mysql中保存这些多行

mysql - Codeigniter SQL 查询 - DATE_ADD

mysql - 将最新时间与同一行中的正确数据分组

MySQL:从给定的 `Date`对象查找一年中的第一个和最后一个日期

mysql - 在 SQL 中编写和执行子查询