问题描述
我有一个每日滚动日期列,[table].[Date],从 2020-06-27 到今天。
我需要附加一个周数,2020-06-27 到 2020-07-03 作为第 1 周,依此类推。周六至周五定义为一周。
我尝试了以下方法。虽然这仅定义了一年中的一周,所以当一年过去时,我最终会出现重叠。此外,它没有将第一个日期定义为第 1 周。
datepart(week,[table].[Date]) as Week
解决方法
据推测,您正在使用 SQL Server(基于 SSMS 标记)。
您可以计算天数并除以 7:
select ceiling(datediff(day,'2020-06-26',t.date) / 7.0) as week_number
或者:
选择 1 + floor(datediff(day,'2020-06-27',t.date) / 7.0) 作为 week_number
如果不想硬编码第一个日期,可以使用窗口函数:
select ceiling(datediff(day,min(t.date) over (),t.date) / 7.0) as week_number