【问题标题】:How to Auto generate dates between date range using SQL Query?如何使用 SQL 查询在日期范围之间自动生成日期?
【发布时间】:2019-08-02 03:53:58
【问题描述】:

我只想使用 SQL Query 生成数据范围之间的日期。

来源:

结果:

谢谢, 劳伦斯A

【问题讨论】:

  • 这可以使用一个计数表来创建一个日历表,然后该日历表可用于连接到屏幕截图中的“源”表以创建“结果”数据集。

标签: sql date date-range auto-generate


【解决方案1】:

以下是如何通过使用计数表创建日历表来完成此操作:

declare @source table
(
    user_id int not null primary key clustered,
    from_date date not null,
    to_date date not null
);

insert into @source
values
(1, '02/20/2019', '02/23/2019'),
(2, '02/22/2019', '02/28/2019'),
(3, '03/01/2019', '03/05/2019');

with
rows as
(
    select top 1000
    n = 1
    from sys.messages
),
tally as
(
    select n = row_number() over(order by (select null)) - 1
    from rows
),
calendar as
(
    select
    date = dateadd(dd, n, (select min(from_date) from @source))
    from tally
)
select
s.user_id,
c.date
from @source s
cross join calendar c
where c.date between s.from_date and s.to_date;

结果集:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2017-03-22
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多