0

SQLクエリからのスニペット(SQL Server 2008 R2を使用):

, CONVERT (VARCHAR(10), s.ENTER_DATE, 101) "Enrollment Start Date"

, CONVERT (VARCHAR(10), (ISNULL(CAST(s.LEAVE_DATE AS VARCHAR(10)), '')) ,101) "Enrollment Drop Date"

一番上の行は、日付を適切な101形式(例:)に出力するために正常に機能します06/22/2012

一番下の行は、NULL値を空白に削除するために必要に応じて機能しますが、 ...日付値については、その日付を適切な101形式に出力せず、代わりにデフォルト形式で日付を出力します(例:2012年6月22日)。

コードを試してオンラインで検索しましたが、希望する結果が得られません。

誰かが解決策を提案できますか?

ありがとうございました!

4

1 に答える 1

3

2番目の式は次のように評価されます。

  1. または値は文字列に変換されます(を使用しdateて)datetimeCAST()

  2. ISNULL()NULLでない場合、同じ結果(同じ文字列)を返すが適用されます。

  3. 文字列は...文字列に変換されます(CONVERT()今回は使用します)。

したがって、ご覧のとおり、最も内側の変換の結果として、誤った形式の日付が取得されます。

別の方法で適用する必要があるISNULLと思います。おそらくこのように:

ISNULL(CONVERT (VARCHAR(10), s.ENTER_DATE, 101), '') "Enrollment Start Date"
于 2012-06-22T23:36:00.233 に答える