小さい会社の1人SEの開発記というか奮戦記

  1. SQL Server
  2. 3385 view

SQL文で今日から7日前までを指定する

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型を使う逃げ手も有りますが、過去との連続性でそうもいかない場合もあると思いますので対処方法として覚えてくと良いと思います。

SQL Serverの最近記事

  1. SQL文で今日から7日前までを指定する

  2. CASE文でビューに分岐処理を実装する【SQL Server】

  3. 変更の保存が許可されていません【SQL Server】

  4. Select Into でテーブルを別のマシンにコピーする【SQL Server】

  5. IN句+サブクエリを使ってデーターを削除する【SQL Server】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する