0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQL Server 基準日までの期間取得

Posted at

実行日を基準に特定の日付を取得する

SQL Serverでクエリ実行日を基準日として特定の日付を取得する方法です。

コード

--抽出月の前月1日
CONVERT(NVARCHAR,DATEADD(MM,DATEDIFF(MM,0,GETDATE())-1,0),112)
--抽出月の前月末日
CONVERT(NVARCHAR,DATEADD(MM,DATEDIFF(MM,0,GETDATE()),-1),112)
--抽出月の前月から1年前の1日
CONVERT(NVARCHAR,DATEADD(MM,DATEDIFF(MM,0,GETDATE())-12,0),112)

##解説
コードの意味を解説していきます。

GETDATE関数:今日の日付を取得

GETDATE()

DATEDIFF関数:2つの日付の差分を取得する

---DATEDIFF(datepart, startdate, enddate)

DATEDIFF('MM',-1,GETDATE())

datepartは
yy:年
MM:月
dd:日
等を指定します。

startdateに数値を入れると基準日(1900年1月1日)からの差で日付指定できる。例)-1は1989年12月31日

DATEADD関数:日付を加える

--DATEADD(datepart, number, date)
--前月1日
DATEADD(MM,DATEDIFF(MM,0,GETDATE())-1,0)
--前月末日
DATEADD(MM,DATEDIFF(MM,0,GETDATE()),-1)
--前月から1年前の1日
DATEADD(MM,DATEDIFF(MM,0,GETDATE())-12,0)

CONVERT関数:日付を文字列に変換する

--CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
CONVERT(NVARCHAR,DATEADD(MM,DATEDIFF(MM,-1,GETDATE())-1,-1),112)

styleの112はyyyymmdd形式に変換の意味。その他の形式は下記を参照
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?