まず、dateadd と datepart の機能を確認する為の SQL が以下のようになります。 ※ m と mm は month の省略形です
select cast('2019/01/01' as datetime), dateadd(month, -1, getdate()), dateadd(m, -1, getdate()), dateadd(mm, -1, getdate()), case when datepart(year, cast('2019/01/01' as datetime)) = datepart(year, dateadd(month, -1, getdate())) then '一致しました' else '一致しません' end as 年比較, case when datepart(month, cast('2019/01/01' as datetime)) = datepart(month, dateadd(month, -1, getdate())) then '一致しました' else '一致しません' end as 月比較
▼ これを踏まえて条件にしたものです。
select * from [テーブル名] where DATEPART(year, 対象日付) = DATEPART(year, DATEADD(m, -1, GETDATE())) and DATEPART(m, 対象日付) = DATEPART(m, DATEADD(m, -1, GETDATE()))
現在の年月日を getdate() で取得し、その月を一つマイナスして年部分と月部分を別々に取得して、比較したい日付の年部分と月部分がどちらも一致していたら、前月です。 関連する Microsoft ドキュメント DATEADD (Transact-SQL) DATEPART (Transact-SQL) CAST および CONVERT (Transact-SQL) CASE (Transact-SQL)
|