2015年6月22日 星期一

SQL Server取得當月第一天及最後一天

方法一:
參考出處
當月第一天
DECLARE @StartTime datetime = DATEADD(day,-DAY(GETDATE())+1, CONVERT(datetime,CONVERT(date, GETDATE())))

當月最後一天
DECLARE @EndTime datetime = DATEADD(ss, -1, DATEADD(m,1,@StartTime))

上月第一天
DECLARE @StartTime datetime = DATEADD(day,-DAY(GETDATE())+1, CONVERT(datetime, CONVERT(date, DATEADD(MM, -1,GETDATE()))))

方法二:
德瑞克:SQL Server 學習筆記

需求:
計算與目前日期為基礎,其相差特定月數的最後一天

公式:
SELECT DATEADD(MM, DATEDIFF(MM, -1, GETDATE()) + <相差特定月數>, 0) - 1 AS N'xxx月最後一天'
 
請參考以下的範例程式碼:
DECLARE @date DATETIME
SET @date = GETDATE()
 
SELECT DATEADD(MM, DATEDIFF(MM, -1, @date), 0) - 1 AS N'本月最後一天' , @date N'今天'
SELECT DATEADD(MM, DATEDIFF(MM, -1, @date) - 1, 0) - 1 AS N'前一個月最後一天' , @date N'今天'
 
SELECT DATEADD(MM, DATEDIFF(MM, -1, @date) + 1, 0) - 1 AS  N'下一個月最後一天' , @date N'今天'
 
SELECT DATEADD(MM, DATEDIFF(MM, -1, @date) - 2, 0) - 1 AS N'前兩個月最後一天' , @date N'今天'
 
SELECT DATEADD(MM, DATEDIFF(MM, -1, @date) + 2, 0) - 1 AS  N'下兩個月最後一天' , @date N'今天'
 

沒有留言: