SQLServer : 前月データを抽出する条件

まず、dateadd と datepart の機能を確認する為の SQL が以下のようになります。

※ m と mm は month の省略形です
01.select
02.        cast('2019/01/01' as datetime),
03.        dateadd(month, -1, getdate()),
04.        dateadd(m, -1, getdate()),
05.        dateadd(mm, -1, getdate()),
06. 
07.        case
08.        when datepart(year, cast('2019/01/01' as datetime)) = datepart(year, dateadd(month, -1, getdate()))
09.                then '一致しました'
10.                else '一致しません'
11.        end as 年比較,
12. 
13.        case
14.        when datepart(month, cast('2019/01/01' as datetime)) = datepart(month, dateadd(month, -1, getdate()))
15.                then '一致しました'
16.                else '一致しません'
17.        end as 月比較

▼ これを踏まえて条件にしたものです。
1.select *
2. 
3.from [テーブル名]
4. 
5.where
6.        DATEPART(year, 対象日付) = DATEPART(year, DATEADD(m, -1, GETDATE()))
7.and     DATEPART(m, 対象日付) = DATEPART(m, DATEADD(m, -1, GETDATE()))

現在の年月日を getdate() で取得し、その月を一つマイナスして年部分と月部分を別々に取得して、比較したい日付の年部分と月部分がどちらも一致していたら、前月です。


関連する Microsoft ドキュメント

DATEADD (Transact-SQL)

DATEPART (Transact-SQL)

CAST および CONVERT (Transact-SQL)

CASE (Transact-SQL)