首页 > 解决方案 > MySQL在不使用表列的情况下选择两列之间的范围日期

问题描述

在我的 sql 中,我想在不使用表列的情况下获取两个日期之间的日期差异 例如

SELECT BETWEEN '2012-01-10' AND '2012-01-15' as date1;

我必须得到以下日期作为输出 '2012-01-11' '2012-01-12' '2012-01-13' '2012-01-14'

如何编写查询以获取上述输出

标签: mysqlsqldatetimebetween

解决方案


如果您正在运行 MySQL 8.0,则可以使用递归查询来执行此操作:

with recursive cte as (
    select '2012-01-10' + interval 1 day as dt
    union all 
    select dt + interval 1 day from cte where dt + interval 1 day < '2012-01-15'
)
select * from cte

这会在输入给定的范围内每个日期生成一行。


推荐阅读