Excelでデーターベースを検索し依頼日が7日前~今日という定型のアラームリストを作りたい場合がありますよね。今回はそのTipsについてまとめます。
やりたいこと
Datetime型の「依頼日」という列があり今日の7日前より大きい物を検索したい。
考え方
日付比較なのでDatetime型から時分秒を取り除いて比較するのがポイントです。Datetime型では時分秒が小数点で保存されているので、「その日まで」という検索条件で抽出をかけると漏れてしまいます。
WHERE句の例
FORMATを使う場合とCONVERTを使う場合の2通りの例があります。
FORMAT使用例
VBAを使用している方ならFORMATを使った方が理解しやすいと思います。
WHERE (Format([依頼日],’yyyyMMdd’) >= Format(dateadd(d,-7,getdate()),’yyyyMMdd’))
CONVERT使用例
SQL文で問題ない方はこちらの方が簡単です。
WHERE (CONVERT(date, [依頼日]) >= CONVERT(date, getdate()-7))
SQL文の例
テーブル T_TEST を使った場合のSQL文の例です。
- SELECT * FROM T_TEST WHERE (Format([依頼日],’yyyyMMdd’) >= Format(dateadd(d,-7,getdate()),’yyyyMMdd’)) ;
- SELECT * FROM T_TEST WHERE (CONVERT(date, [依頼日]) >= CONVERT(date, getdate()-7)) ;
まとめ
日付比較する時Datetime型を使用しているとちょっとした落とし穴がありますので注意しましょう。時間計算がいらないならDate型を使う逃げ手も有りますが、過去との連続性でそうもいかない場合もあると思いますので対処方法として覚えてくと良いと思います。
この記事へのコメントはありません。