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で実行すると、下記のような結果が表示されます。
各項目名から参照してください。