C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 57 を表示中)
■32644 / )  Re[1]: 日付とNULLで判断して抽出するSQL文
□投稿者/ 魔界の仮面弁士 (994回)-(2009/02/11(Wed) 20:56:48)
2009/02/11(Wed) 20:59:51 編集(投稿者)

No32641 (Neil さん) に返信
> まず、退職日が入っていない場合はISNULLを使ってNULLにすればよいのでしょうか?

それは逆でしょう。

ISNULL 関数は、NULL にするためのものでは無く、NULL 以外にするためのものですよ。
この場合はたとえば
  WHERE ISNULL ( 退職日 , 未来日付 ) > CURRENT_DATE
といった所でしょうか。未来日付 の部分は、9999年の日付を固定で入れても良いですし、
DATEADD( ms, 1, CURRENT_DATE ) などとしても良いかと。



> それともANDなどで「退職日 IS NOT NULL AND 退職日 <= CURRENT_DATE」にすれば良いのでしょうか?

これも逆かと。

元の条件は
   【退職日が入っていない】『もしくは』【退職日が現在の日付より未来の場合】
なのですから、そのまま、
  WHERE (退職日 IS NULL) OR (退職日 > CURRENT_DATE)
と書けば良いかと思います。

これを、「ド・モルガンの法則」を適用して変換すると、
  WHERE NOT ( (退職日 IS NOT NULL) AND (退職日 <= CURRENT_DATE) )
という記述になるわけですが、これは Neil さんの書いた条件の真逆になりますね。
返信 編集キー/


管理者用

- Child Tree -