とがvarcharsとして2つの別々の属性に格納されているデータベースがありますCREATEDATE
。これら2つを1つの属性CREATETIME
に結合しようとしています。smalldatetime
次の変換を実行すると、エラーが発生します。
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
UPDATE UsersTemp
SET Created = CONVERT(datetime, CAST(CONVERT(date, CreateDateIMF, 102)AS varchar(50))
+ ' ' +
CASE WHEN LEN(CreateTime) = 6 THEN
Left(CreateTime, 2) + ':' + SUBSTRING(CreateTime, 2, 2)
ELSE
Left(CreateTime, 1) + ':' + SUBSTRING(CreateTime, 1, 2)
END
+ ':' + Right(CreateTime, 2), 120)
(はい、これは厄介なSQLですが、このデータをより適切に使用できる方法で取得するのは一時的なものです)
セット全体を操作するときにさまざまなことを試しましたが、うまく機能しないようです。
上記のパラメータをで試してみるとSELECT
、日付は正常に機能するため、時間フィールドに問題がありますが、修正方法がわかりません。
元のデータの例:
CREATEDATEIMF
20120220
20040415
20040415
20040415
20040415
20040415
20040415
20040415
20040415
20050510
CREATETIME
160401
142304
142304
142304
142304
142304
142304
142304
142304
44427
時間はHMMSSであることを確認しました。(短い時間には先行ゼロがないことに注意してください)
このデータは、古いCOBOLプログラムからのダンプです。