MSSQL 操作DateTime欄位,利用DATEPART,DATEADD函數,將日報表整理成週報表
彙總周一至周日之累計時數
SET DATEFIRST 1 /* 將一週的第一天設為 1-7 其中一個數字。 1為周一 ,7為週日*/
Step1. 從日報表 計算當日是當週第幾天。
例 DATEPART(dw,'2014-10-20')=1 ,DATEPART(dw,'2014-10-21')=2
Step2.1 將各個不同日期設定至當週第一天。
使用DATEADD [取得當週第一天]: DATEADD( Day ,1-當天是當週第幾天, [當天] )
例 IIF(DATEPART(dw,'2014-10-21')=1, '2014-10-21' , DATEADD( Day ,1-DATEPART(dw,'2014-10-21'),'2014-10-21'))
Step2.2 將各個不同日期設定至當週第七天。
使用DATEADD [取得當週第七天]:DATEADD( Day ,7-當天是當週第幾天, [當天] )
例 IIF(DATEPART(dw,'2014-10-21')=7, '2014-10-21' , DATEADD( Day ,7-DATEPART(dw,'2014-10-21'),'2014-10-21'))
Step3. 依需求,看週報是要呈現當週第一天還是當周最後一天,以 2.1或2.2 得到的日期做GROUP BY 產出週報
此方式可使周報在跨年度時也能正確呈現當週資料