Sql server 生成两个日期范围之间的周范围
我正在使用SQL Server 2017,我需要获取两个日期范围之间的周范围。我发现了一个类似的问题 但它不会在所有情况下都起作用 代码: 预期产出:第一周为周日Sql server 生成两个日期范围之间的周范围,sql-server,Sql Server,我正在使用SQL Server 2017,我需要获取两个日期范围之间的周范围。我发现了一个类似的问题 但它不会在所有情况下都起作用 代码: 预期产出:第一周为周日 由于您希望本周从星期天开始,那么锚定成员的结束日期应设置为星期六 递归成员的开始日期仅从cte的结束日期加上1天 declare @sDate date = '2020-04-24', @eDate date = '2020-05-07'; with cte as ( select @sDate as S
由于您希望本周从星期天开始,那么锚定成员的结束日期应设置为星期六 递归成员的开始日期仅从cte的结束日期加上1天
declare @sDate date = '2020-04-24',
@eDate date = '2020-05-07';
with
cte as
(
select @sDate as StartDate,
convert(date , dateadd(wk, datediff(wk, 0, @sDate), 5)) as EndDate
union all
select dateadd(day, 1, EndDate) as StartDate,
case when dateadd(week, 1, EndDate) <= @eDate
then dateadd(week, 1, EndDate)
else @eDate
end as EndDate
from cte
where dateadd(day, 1, EndDate) <= @eDate
)
select *
from cte
@smor我添加了解决方案的代码。。我已经提到了输入…请在评论之前检查一下-有一个日历表是值得的,它的重量是金色的-@Harry thnks..但我实际上需要每周信息,而不是每天
declare @sDate date = '2020-04-24',
@eDate date = '2020-05-07';
with
cte as
(
select @sDate as StartDate,
convert(date , dateadd(wk, datediff(wk, 0, @sDate), 5)) as EndDate
union all
select dateadd(day, 1, EndDate) as StartDate,
case when dateadd(week, 1, EndDate) <= @eDate
then dateadd(week, 1, EndDate)
else @eDate
end as EndDate
from cte
where dateadd(day, 1, EndDate) <= @eDate
)
select *
from cte