SQL设置周数从周一到周日的周数

时间:2014-04-07 14:42:43

标签: sql sql-server datetime

我正在尝试在表格中设置月份的周数。逻辑是第一周从第一个星期的第一天开始,直到第一个星期日,其余的星期在每个星期一开始。我在实现这个方面遇到了麻烦。有任何想法吗?我的代码看起来像这样。

我以前曾在这里获得过帮助,以类似的方式设定整年的周数。它看起来如下:

UPDATE [DimTime] 
SET [WeekNumberOfYear] = DATEPART(WEEK,[Date]) - CASE WHEN DATEPART(WEEKDAY,[Date])     in (1) THEN 1 ELSE 0 END

2 个答案:

答案 0 :(得分:1)

这应该会给你一个正确的结果:

UPDATE [HMDBDataMartBOS].[dbo].[Dimension.DimTime] 
SET [NaturalWeekNumberOfYear] = datediff(d, datediff(d, 0, 
dateadd(m, datediff(m, 0, [Date]), 0))/7*7 - 7,[Date])/7

答案 1 :(得分:0)

这样的东西?

--Sample data
DECLARE @bob TABLE(dat DATE)
INSERT INTO @bob VALUES ('2012/04/01'), ('2012/04/06'), ('2012/04/07'), ('2012/04/08'),('2012/04/15'),('2012/04/30')

SET DATEFIRST 1 -- make Monday the first day of the week

--and the results
SELECT DATEPART(DAY,dat)/7 + 1 MonthWeek
FROM @bob