将周附加到滚动日期列

Appending weeks to rolling date column

我有一个每日滚动日期列,[table]。[日期],从 2020-06-27 到今天。

我需要附加一个周数,将 2020-06-27 到 2020-07-03 作为第 1 周,依此类推。星期六到星期五定义为一周。

我尝试了以下方法。虽然这只定义了一年中的 ,所以当一年过去时,我最终会出现重叠。此外,它没有将第一个日期定义为第 1 周。

datepart(week,[table].[Date]) as Week

据推测,您正在使用 SQL 服务器(基于 SSMS 标记)。

你可以算天数除以7:

select ceiling(datediff(day, '2020-06-26', t.date) / 7.0) as week_number

或者:

select 1 + floor(datediff(day, '2020-06-27', t.date) / 7.0) 作为 week_number

如果您不想对第一次约会进行硬编码,您可以使用 window 函数:

select ceiling(datediff(day, min(t.date) over (), t.date) / 7.0) as week_number