SQL将特定月份设置为一年中的第一个月

时间:2015-07-13 04:34:11

标签: sql sql-server date

我正在尝试在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

2 个答案:

答案 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。