0

この SQL コード スニペットが機能しない理由がわかりません。

cast(cast(b.remodelyear as varchar(5)) + '-01-01' as datetime)

改造年は、年からなる整数です (例: 2012)。それを varchar にキャストし、それに月と日を追加してから、すべてを日時にキャストします。

これは機能します:

cast(cast(Yr as varchar(5)) + '-' + cast(Mth as varchar(5)) + '-' + '01' as datetime)

どこで私は間違えましたか?

ありがとう!

4

1 に答える 1

0

個人的には、このために文字列を連結せず、(些細な) 日付計算を実行します。

SELECT DATEADD(year, b.remodelyear - 1, '00010101')
FROM <sometable> b

(私は SQL Server を想定していることに注意してください。日付形式の背後にある理由については、このブログ投稿をお読みください。別の RDBMS を使用している場合は、これを変換する必要があります)。私が知っているほとんどすべての RDBMS は、5 桁目に遭遇するとエラーをスローするため、
なぜ にキャストするのか興味があります。varchar(5)

于 2013-03-20T15:59:28.973 に答える