FLOAT
次のような日付のフィールドがあります。
+-----------+
| FloatDate |
+-----------+
| 1012013 | -- Jan 1
| 3262013 | -- Mar 26
| 11072013 | -- Nov 7
| 10012013 | -- Oct 1
+-----------+
このデータを別のテーブルに挿入したいのですが、そのdateFieldのデータ型はDATETIME
.
だから、私は FloatDate 値を DATETIME に変換しようとしていますが、失敗し続けています..
私はもう試した
INSERT INTO NEWTABLE
(DateTimeDate)
SELECT CONVERT(DATETIME, CAST(CAST(FloatDate AS INTEGER) AS CHAR), 112)
FROM OLDTABLE
しかし、これは私に言うエラーを与えます
文字列から日時を変換する際に変換に失敗しました
FloatDateの日付形式がYYYYMMDDであれば動作するようです。だから、私がこれを行うと、うまくいきます。
DECLARE @test FLOAT
SET @test = 2132013
SELECT @test, CONVERT(DATETIME, CAST(RIGHT(CAST(@test AS INTEGER), 4) AS CHAR(4)) +
CASE WHEN LEN(CAST(@test AS INTEGER)) = 7 THEN '0' + CAST(LEFT(CAST(@test AS INTEGER), 3) AS CHAR(3))
WHEN LEN(CAST(@test AS INTEGER)) = 8 THEN CAST(LEFT(CAST(@test AS INTEGER), 4) AS CHAR(4)) END, 1)
しかし、これを複雑にしすぎて、より単純な解決策を見逃しているだけなのか、それともこれが私が達成できる唯一の方法なのか疑問に思っています??