0

みなさん、良い一日を!

日付列を引数としてT-SQLISDATE()関数を使用して、不適切な日付を除外しています。問題は、ISDATE関数が値に遭遇したときにゼロを返すことNULLです。

以下の例では、日付が null の場合、テーブル内の有効なデータは結果セットから除外されます。有効な日付を取得するだけでなく、日付のないレコードも取得できるようにするにはどうすればよいですか? 日付のないレコードも必要です。たとえば、不完全な日付や日付に文字がないなど、日付が不適切なレコードのみを削除する必要があります。

例:

SELECT * FROM EXAMPLE WHERE ISDATE(MAYDATE) <> 0

ありがとう、友よ!

4

4 に答える 4

2

ISNULL関数を使用して、NULL 値を ISDATE 関数で使用されたばかりの有効な日付値に置き換えることができます。以下に 2 つの例を示します。

SELECT * FROM EXAMPLE WHERE ISDATE(ISNULL(MAYDATE, '1/1/1900')) <> 0
SELECT * FROM EXAMPLE WHERE ISDATE(ISNULL(MAYDATE, GETDATE())) <> 0

または、値が NULL かどうかを確認するだけです

SELECT * FROM EXAMPLE WHERE (ISDATE(MAYDATE) <> 0) OR (MAYDATE IS NULL)
于 2012-05-11T20:36:04.570 に答える
1

最初に null をチェックする

SELECT * FROM EXAMPLE WHERE MAYDATE is null or ISDATE(MAYDATE) <> 0
于 2012-05-11T20:31:42.570 に答える
1

試す:

SELECT * FROM EXAMPLE WHERE ISDATE(MAYDATE) <> 0 OR MAYDATE IS NULL
于 2012-05-11T20:30:50.627 に答える
0
SELECT * FROM EXAMPLE WHERE (MAYDATE IS NOT NULL AND ISDATE(MAYDATE) <> 0)
     OR (MYDATE IS NULL)
于 2012-05-11T20:31:05.353 に答える