web-dev-qa-db-ja.com

SQL Server Isnullフィールドがnullのときに1900-01-01を返す

次のコードは、DOBフィールドがnullの場合に1900-01-01を返します。私はそれが空の文字列( '')を返すことを望みました(そして期待していました)が、そうではありません。どうすれば希望の結果を得ることができますか?

isnull(convert(date,DOB,1),'')
15
Juan Velez

DATEからISNULL値タイプを返すため、空の文字列を取得できません。

あたり [〜#〜] msdn [〜#〜]ISNULL

check_expressionと同じ型を返します。check_expressionとしてリテラルNULLが指定されている場合、replacement_valueのデータ型を返します。 check_expressionとしてリテラルNULLが提供され、replacement_valueが提供されていない場合、intを返します。

値がNULLであるかどうかを確認している場合は、日付値を返そうとしない限り(これはそうではないようです)、日付に変換する必要はありません。

代わりに、次を使用します。

SELECT ISNULL( DOB , '')

どっちが戻る

''

値がNULLの場合。

NULL日付はNULL(値なし)です。一方、空の文字列は0に評価されます。これは、SQL Serverでは1900-01-01からの日数を暗黙的に表す整数です。

21
LowlyDBA