私はかなり新しいSQLですが、datediff関数に関する質問があります。Datediff NULLクエリ
私は、決済日が元の期日の1日から180日の範囲内にあるすべての口座を取り戻したいと思います。
DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180
解決済みの日付がNULLになる可能性のある場所もすべて含めるにはどうすればよいですか。
おかげ
私はかなり新しいSQLですが、datediff関数に関する質問があります。Datediff NULLクエリ
私は、決済日が元の期日の1日から180日の範囲内にあるすべての口座を取り戻したいと思います。
DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180
解決済みの日付がNULLになる可能性のある場所もすべて含めるにはどうすればよいですか。
おかげ
これは、値が解釈されるべきである、と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
における第二の値として設定し、適用する場合。
次のようなWHERE句でこれを追加することができます。これは、あなたが非定住の値の任意の日付の比較を必要としないと仮定している
SELECT * FROM <tables join>
WHERE DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180
OR
sett.[date] IS NULL
。 –