まず、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)