首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL Server中生成周末日期

在SQL Server中生成周末日期
EN

Stack Overflow用户
提问于 2021-09-23 19:10:34
回答 1查看 90关注 0票数 0

我在Microsoft SQL Server Management Studio中工作。我想为不同的ID和他们不同的时间范围生成所有的周末日期(星期六)。

下面是我的数据:

代码语言:javascript
复制
ID   minDate    MaxDate
-------------------------
101  5/16/2020  9/25/2021
102  8/7/2021   8/21/2021
103  5/1/2021   9/26/2021

对于ID = 101,我想返回从2020年5月16日、2020年5月23日、2020年5月30日、2020年6月6日开始的所有周结束日期(星期六).一直到2021年9月25日。

我需要为所有不同的ID做同样的事情。

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-23 20:28:40

..fiddle..

代码语言:javascript
复制
select *, dateadd(week, nm.rn-1, dateadd(day, 7-datepart(weekday, dateadd(day, @@datefirst,mindate)), mindate)) as _Saturday
from
(
values
(101, cast('20200516' as date), cast('20210925' as date)),
(102, '20210708', '20210822'),
(103, '20210501', '20210926')
) as t(id,mindate,maxdate)
join
(
    --tally..max 1000 weeks
    select row_number() over(order by @@spid) as rn
    from (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) as a(n)
    cross join (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) as b(n)
    cross join (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) as c(n)
) as nm on nm.rn <= datediff(week, mindate, maxdate)+1
where t.maxdate >= dateadd(week, nm.rn-1, dateadd(day, 7-datepart(weekday, dateadd(day, @@datefirst,mindate)), mindate))
order by t.id, nm.rn;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69305728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档