我有一个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)
但是,我想知道我是否让这太复杂而只是错过了更简单的解决方案,或者这是我能实现的唯一方法?