Week calculation from a specific period

后端 未结 5 1905
轻奢々
轻奢々 2021-01-29 06:52

suppose the fiscal year is starting from July/1st to June/30th.

I have to calculate the week no. accordingly in SQL Server 2005.

Please Suggest!

Many Tha

5条回答
  •  甜味超标
    2021-01-29 07:08

    This one worked for me:

    SELECT dt AS DayDate,
    CONVERT(VARCHAR,DATENAME(weekday,dt)) AS [DayOfWk],
    CONVERT(int,CONVERT(VARCHAR,DATEPART(yyyy,dt)) + RIGHT('00' + CONVERT(VARCHAR,DATEPART(wk,dt)),2)) AS [WeekID],
    'Week ' + CONVERT(VARCHAR,DATEPART(wk,dt))AS [WeekDsc],
    DATEPART(wk,dt) AS [WeekNbr],
    DATEADD(dd, -(DATEPART(dw, dt)-1), dt) AS [WeekStartDay],
    DATEADD(dd, 7-(DATEPART(dw, dt)), dt) AS [WeekEndDay],
    CONVERT(VARCHAR,CASE WHEN DATEPART(mm,dt) > 6 THEN DATEPART(yyyy,dt) + 1 ELSE DATEPART(yyyy,dt) END) + RIGHT('00'+ CONVERT(VARCHAR,DATEDIFF(week,DATEADD(dd, 7-(DATEPART(dw, CASE WHEN DATEPART(mm,dt) > 6 THEN CONVERT(VARCHAR,DATEPART(yyyy,dt)) + '-07-01' ELSE CONVERT(VARCHAR,DATEPART(yyyy,dt) - 1) + '-07-01' END)), CASE WHEN DATEPART(mm,dt) > 6 THEN CONVERT(VARCHAR,DATEPART(yyyy,dt)) + '-07-01' ELSE CONVERT(VARCHAR,DATEPART(yyyy,dt) - 1) + '-07-01' END) + 1,DATEADD(dd, -(DATEPART(dw, dt)-1), dt)) + 2) ,2) AS [FinWkID]
    FROM 
    (
        SELECT DATEADD(day,increment,'2014-01-01') dt
        FROM
        (
            SELECT top 5000 ROW_NUMBER() OVER (ORDER BY s1.[object_id]) - 1 AS increment
            FROM sys.all_objects AS s1
            CROSS JOIN sys.all_objects AS s2
            ORDER BY s1.[object_id]
        ) SQ
    ) DATE_GENERATOR
    

提交回复
热议问题