使用sql語句計算周次及起始日期
阿新 • • 發佈:2019-02-12
最近在做週報填報的功能,其中需要算一下週次及起始日期。本打算用程式程式碼算一下的,但是感覺用sql更有意思,所以搜了一些相關的知識以及前人寫的相關的sql語句,在此基礎上進行了完善。
1、國際標準週日是每週的第一天,但是在咱們中國人還是習慣週一為每週的第一天,因此首先要把週一設定為每週的第一天
SET DATEFIRST 1
2、計算你傳過來時間段的開始日期是本年的第幾周和周幾(如果為週日則周次再加一)
DATEPART(dw, @tmpDate)
SELECT DATEPART(WEEK, @tmpDate)
3、完整sql(這裡我傳的時間段是2017-01-15至2017-01-31)SET DATEFIRST 1 DECLARE @tmpDate DATETIME DECLARE @index INT DECLARE @table TABLE ( WeekTimes INT , FirstDay DATE , EndDay DATE ) SET @tmpDate = '2017-1-15' DECLARE @YearFistWK INT= DATEPART(dw, @tmpDate) SET @index = ( SELECT DATEPART(WEEK, @tmpDate) ) IF ( @YearFistWK = 7 ) BEGIN SET @index = @index + 1 END WHILE @tmpDate <= '2017-1-31' BEGIN INSERT INTO @table SELECT @index , a.FirstDay , b.EndDay FROM ( SELECT 1 AS ID , DATEADD(wk, DATEDIFF(wk, 0, @tmpDate), 0) AS FirstDAy ) a LEFT JOIN ( SELECT 1 AS ID , DATEADD(wk, DATEDIFF(wk, 0, @tmpDate), 6) AS EndDay ) b ON a.ID = b.ID SET @tmpDate = DATEADD(DAY, 7, @tmpDate) SET @index = @index + 1 END SELECT * FROM @table
4、執行結果