0

次の点を考慮してください。

SELECT [DOB] = CASE WHEN [DOB] = '-' then 'invalid date' ELSE cast([DOB] as datetime) 
END
FROM myTable where myID = 73351

の場合DOB = '-'、次のエラー メッセージが表示されます。

文字列から日時を変換する際に変換に失敗しました。

これは、SQL ServerがDOBをdatetime印刷するだけであるにもかかわらず、 DOBをキャストしようとしていることを示しているよう'invalid date'です。

'invalid date'ただし、 のときに正しく返されるこれを考慮してDOB = '-'ください。

SELECT [DOB] = CASE WHEN [DOB] = '-' then 'invalid date' ELSE 'valid date'
END
FROM myTable where myID = 73351

'invalid date'最初のステートメントをいつ返すようにするにはどうすればよいDOB = '-'ですか?

4

2 に答える 2

1

varchar と datetime の 2 つの異なるデータ型を持つ列を作成しています。両方の可能性を SQL_VARIANT としてキャストしてみてください。

SELECT [DOB] =
CASE
    WHEN [DOB] = '-' THEN CAST('Invalid' as sql_variant)
    ELSE CAST(CAST([DOB] as DATETIME) as sql_variant)
END

http://msdn.microsoft.com/en-us/library/ms173829(v=sql.90).aspx

于 2013-07-08T17:35:18.137 に答える