|
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 さんの書いた条件の真逆になりますね。
|