2016-05-19 19 views
0

私はかなり新しいSQLですが、datediff関数に関する質問があります。Datediff NULLクエリ

私は、決済日が元の期日の1日から180日の範囲内にあるすべての口座を取り戻したいと思います。

DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180 

解決済みの日付がNULLになる可能性のある場所もすべて含めるにはどうすればよいですか。

おかげ

答えて

0

これは、値が解釈されるべきである、とisnull機能の使用方法をNULLに依存します。

NULLは「今日」を意味する場合はNULLが「資格はありません」を意味している場合、常にそれを失格になるダミ​​ーの日付を使用し、

DATEDIFF(DD, isnull(odd.[date], getdate()), isnull(sett.[date], getdate()) between 1 and 180 

を使用しています。いずれかの場合は、次の常に負の値を返す必要があり/または両方の値がヌルである:

DATEDIFF(DD, isnull(odd.[date], 'Dec 31, 2100'), isnull(sett.[date], 'Jan 1, 1980') between 1 and 180 

他のいくつかの日付の値を判断し、適切なisnullにおける第二の値として設定し、適用する場合。

0

次のようなWHERE句でこれを追加することができます。これは、あなたが非定住の値の任意の日付の比較を必要としないと仮定している

SELECT * FROM <tables join> 
WHERE DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180 
OR 
sett.[date] IS NULL 
+0

。 –