我正在尝试在SQL中编写一个报告,将7月的第一周设置为一年中的第一周。
我已经在下面找到这一行来获取周计数,但它只能运行一年。即如果我有一个明年7月的数据,它会进入第53周(依此类推),而不是重新开始到第1周。
datediff(ww, DATEADD(yyyy,CAST(RIGHT(DATEPART(yy,GETDATE()),2) as INT),'7/1/2000'),
DATEADD(dd, 8-(DATEPART(dw, S.StartDate)), S.StartDate)) as WeekCount
答案 0 :(得分:0)
如何使用它:
SELECT
FLOOR(
CASE WHEN DATEPART(MONTH, @date) >= 7 THEN
DATEPART(DAYOFYEAR, @date) - (DATEPART(DAYOFYEAR, DATEFROMPARTS(DATEPART(YEAR, @date), 7, 1)) - 1)
ELSE
DATEPART(DAYOFYEAR, @date) + (DATEPART(DAYOFYEAR, DATEFROMPARTS(DATEPART(YEAR, @date), 7, 1)))
END
/ 7) + 1
答案 1 :(得分:0)
怎么样:
select
(Datepart(week, convert(datetime,
substring(CONVERT(VARCHAR(11),@date,6), 1, 7) + '2000')) % 27) + 1
我真的只是剥离了一年,总是使用一年我知道的作品。然后只需(mod)得到除法的余数27。