DOBフィールドがnullの場合、次のコードは1900-01-01を返します。空の文字列( '')を返すことを望んでいました(期待していました)が、そうではありません。希望する結果を得るにはどうすればいいですか?
isnull(convert(date,DOB,1),'')
DOBフィールドがnullの場合、次のコードは1900-01-01を返します。空の文字列( '')を返すことを望んでいました(期待していました)が、そうではありません。希望する結果を得るにはどうすればいいですか?
isnull(convert(date,DOB,1),'')
回答:
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
です。
DOBが読み込まれたときにDOBの値を返し、DOBが読み込まれなかったときにnull値を削除する場合。これを試すことができますが、DOBは日付型ではなく、varcharになります。
isnull(cast(cast(DOB as date)as varchar),'') as DOB (SQL SERVER)
VARCHAR
をaにキャストし、a DATE
に戻すことはVARCHAR
意味がありません。そのナンセンスを削除すると、あなたの答えは受け入れられた答えと同じで、説明は少なくなります。
datetime
日付のみが必要でしたYYYY-MM-DD
。だからdate
時間を落としてキャストすることで。次に、キャストするvarchar
ことでisnull
関数を使用できます。そのため、私はまだデータが取り込まれた日付を取得し、null値を削除します。そうでなければ、私は得ていた1900-01-01 00:00:00.000
。
使用する
select isnull(Convert(Varchar(500)、Date、106)、 '')
その働き
NULL
デートSELECT CAST('' AS DATE)
でしていることは言っています。どのデータ型DOB
ですか?