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

わんくま同盟

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

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


(過去ログ 57 を表示中)
■32699 / )  Re[2]: 日付とNULLで判断して抽出するSQL文
□投稿者/ Neil (2回)-(2009/02/12(Thu) 23:09:56)
No32644 (魔界の仮面弁士 さん) に返信
> 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 さんの書いた条件の真逆になりますね。


魔界の仮面弁士さま、有難うございます。
ISNULLの使い方も含めて勘違いしていたようです。
今日、仰るとおりに
>   WHERE (退職日 IS NULL) OR (退職日 > CURRENT_DATE)
表記を含めたSQL文にSELECT文を書き換えた後、上手く動きました。

未来日付と過去日付においての不等号の書き方がイマイチ判らないので、とても助かりました。


本当に有難うございます。
解決済み
返信 編集キー/


管理者用

- Child Tree -