如何通过单个查询显示存储在我的表中的两个日期之间的所有日期? [复制]

Posted

技术标签:

【中文标题】如何通过单个查询显示存储在我的表中的两个日期之间的所有日期? [复制]【英文标题】:How to display all the dates between two dates stored in my table by single query? [duplicate] 【发布时间】:2019-01-29 08:48:34 【问题描述】:

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

这是桌子:

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

任何帮助将不胜感激

【问题讨论】:

我会使用日历表(或 cte)来存储所有需要的日期。 OUTER JOIN 那张表。 尝试使用***.com/questions/6870499/… 试试generate-days-from-date-range @jarlh 我无法创建任何日历表 您使用的是哪个 mysql?递归 cte 可以创建这些日期! 【参考方案1】:

编辑:: 这适用于 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

【讨论】:

它是一个临时表,仅用于获取您需要的结果(hashtag 是临时的)。它不会弄乱您的数据库结构 是的,我知道,但它会在两个日期之间得到所有日期我想要从日期到日期列之间的所有日期

以上是关于如何通过单个查询显示存储在我的表中的两个日期之间的所有日期? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中的两个日期之间获取特定日期

从sql中的表中减去两个日期

sysdate 差异(如何在 sysdate 和我的表日期之间进行查询)

SQL - 为表中的每个货币代码(在两个定义的日期之间)创建一个具有唯一日期和货币记录的表

插入前的表线轴?

查找表中的任何日期是不是在两个日期之间