这里有两种不同的方法,都假设一周从星期一开始
如果您希望几周是完整的,那么它们属于它们开始的月份:
因此,星期六 2012-09-01 和星期日 2012-09-02 是第 4 周,星期一 2012-09-03 是第 1 周,请使用以下命令:
DECLARE @date date = '2012-09-01'
SELECT (day(datediff(d,0,@date)/7*7)-1)/7+1
如果您的周数在月份变化时减少,那么 2012-09-01 星期六和 2012-09-02 星期日是第 1 周,2012-09-03 星期一是第 2 周,请使用以下命令:
DECLARE @date date = '2012-09-01'
SELECT
datediff(ww,datediff(d,0,dateadd(m,datediff(m,7,@date),0)
)/7*7,dateadd(d,-1,@date))+1
我收到了杰拉尔德发来的电子邮件。他指出了第二种方法的缺陷。现在应该修复这个问题
我收到了本·威尔金斯发来的一封电子邮件。他指出了第一种方法的缺陷。现在应该修复这个问题