Microsoft SQL Server 日付計算について

こんにちは、chujiangleiです。
今回は、Microsoft SQL Serverでの日付計算をご紹介いたします。

実際の作業では、日付に関数する計算がよくあります。
初心者にはストアドプロシージャ上で日付の計算について分からないとか、慣れてない方がいると思います。
ここで、ストアドプロシージャ上で日付の求め方を纏めて見ました。皆さんにお役に立てれば幸いです。

/*
指定日についての計算  
*/
DECLARE @Date DATETIME
SET @Date=GETDATE()

-- 指定日の前日を求める
SELECT DATEADD(DAY,-1,@Date) AS '前日'

-- 指定日の翌日を求める
SELECT DATEADD (DAY,1,@Date) AS '翌日'

-- 指定日は本年の何日目
SELECT DATEDIFF(DAY,DATEADD(YEAR,DATEDIFF(YEAR,0,@Date),-1),@Date) AS '本年の何日目'

-- 指定日は本年の何周目
SELECT DATEPART(WEEK,@Date) AS '本年の何周目' -- Return Int型
SELECT DATENAME(WEEK,@Date) AS '本年の何周目' -- Return Varchar型

GO

/*
指定月についての計算
*/
DECLARE @Date DATETIME
SET @Date=GETDATE()

-- 指定月の最初の日を求める
SELECT DATEADD(DAY,1-DATEPART(DAY,@Date),@Date) AS '月初'

-- 指定月の最後の日を求める
SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DATEPART(DAY,@Date),@Date))) AS '月末'

-- 指定月の日数を求める
SELECT DAY(DATEADD(MONTH,DATEDIFF(MONTH,-1,@Date),-1)) AS '日数'

GO

/*
指定四半期の日数の計算
*/
DECLARE @Date DATETIME;
SET @Date = GETDATE()

SELECT @Date = DATEADD(QUARTER,DATEDIFF(QUARTER,0,@Date),0)
SELECT DATEDIFF(DAY,@Date,DATEADD(QUARTER,1,@Date)) AS '日数'

GO

/*
指定年についての計算
*/
DECLARE @Date DATETIME;
SET @Date = GETDATE()

-- 指定年の日数を求める
SELECT @Date = DATEADD(YEAR,DATEDIFF(YEAR,0,@Date),0)
SELECT DATEDIFF(DAY,@Date,DATEADD(YEAR,1,@Date)) AS '日数'
-- 指定年は閏年かの判断
SELECT CASE DATEDIFF(DAY,DATEADD(YEAR,DATEDIFF(YEAR,0,@Date),0),
            DATEADD(YEAR,1+DATEDIFF(YEAR,0,@Date),0)) 
       WHEN 365 THEN '平年' ELSE '閏年' END AS '判断結果'

GO

上記のソースをMicrosoft SQL Server Management Studioで実行すると、下記のような結果が表示されます。
各項目名から参照してください。