首页 > 解决方案 > 如何通过单个查询显示存储在我的表中的两个日期之间的所有日期?

问题描述

我想显示特定记录的两个日期之间的所有日期

这是表格:

ID Start_Date  End_Date
-------------------------
1  2013-01-14  2013-01-18
2  2013-02-01  2013-02-04

现在我想获取从日期到至今的所有日期。

预期产出

ID Date
-------------
1  2013-01-14
1  2013-01-15
1  2013-01-16
1  2013-01-17
1  2013-01-18
2  2013-02-01
2  2013-02-02
2  2013-02-03
2  2013-02-04

任何帮助将不胜感激

标签: mysqlsql

解决方案


编辑:: 这适用于 sql server(我的错误没有看到标签)。可能会为 mysql 做,并且它支持相同的日期函数

尝试像这样用您的表值替换我的硬编码值。这将带回 2 个日期之间的所有天数,包括开始日期。如果您也希望保留最大日期,则必须修改我的代码

create table #datediff
(
id int,
dates date
)

declare @min date, @max date,@df int

set @min = '2018-01-30'
set @max = '2018-02-5'
set @df = DATEDIFF(DAY,@min,@max)


while @df <> 0
begin
    insert into #datediff
    Values ( 1, DATEADD(D,-1,@max))


    set @df = @df -1
    set @max = DATEADD(D,-1,@max)       
end


select * from #datediff

drop table #datediff

推荐阅读