• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付範囲の取得     早めにお願い!)

日付範囲の取得 早めにお願い!

このQ&Aのポイント
  • SQLで2004/10/01と2004/10/11が入力されてないときに選択したデータが取れるようにしたいんですがどうしたらいいですか。
  • SQL Server Management Studio Express使用
  • データを取得したいです

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

2つの日付が未入力のときには、SQLには''(ブランク)が渡されて、 AND 受注残.受注日>='' AND 受注残.受注日<='' となってしまい、結果何もデータが返ってこないので、 他に指定した条件に合致するデータを返したい とこういうことでいいですか? 最初に、以下の部分は条件が重複しているので、片方だけにしてください。 AND 受注残.受注日 >= '2004/10/01' AND 受注残.受注日 <= '2004/10/11' AND 受注残.受注日 between '2004/10/01' and '2004/10/11' 1)テーブルの受注日が必須項目であれば、 AND 受注残.受注日>=ISNULL(NULLIF(CONVERT(varchar,'2004/10/01'),''),'1900/01/01') AND 受注残.受注日<=ISNULL(NULLIF(CONVERT(varchar,'2004/10/11'),''),'2099/12/31') と書くことで、2004/10/01と2004/10/11が入っていないときには、代わりに1900/01/01と2099/12/31が渡されるので、受注日以外の条件に合致するものが返されます。 もしくは、 AND 受注残.受注日>=(CASE WHEN '2004/10/01'='' THEN '1900/01/01' ELSE '2004/10/01' END) AND 受注残.受注日<=(CASE WHEN '2004/10/11'='' THEN '1900/01/01' ELSE '2004/10/11' END) 2)他に書いているようにやってもいいです。 AND ('2004/10/01'='' OR 受注残.受注日>='2004/10/01') AND ('2004/10/11'='' OR 受注残.受注日>='2004/10/11') 3)見たところ、VBか何かで組み立てたSQL文をそのまま貼っただけのようですね。 それなら、日付の条件がブランクなら日付の条件いれなくてもいいのでは。 If strDateF<>"" THEN strSql=strSql+"AND 受注残.受注日>='" & strDateF & "'"

関連するQ&A