0

我正在使用 SQL Server 2008,并从平面文件中进行了导入。我无法datetime正确导入该列,因此我暂时将其指定为nvarchar(50).

现在我想将其转换为datetime2格式。但是,这样做时,我得到了错误

从字符串转换日期和/或时间时转换失败。

当前在我的nvarchar(50)专栏中的数据如下所示:

20140804

我需要将其转换为:

2014-08-04 00:00:00.0000000.

请注意,我不仅要转换一个日期,还要转换StartDATE表中的所有值并将它们插入到另一个表中

任何帮助表示赞赏。

4

3 回答 3

2
Insert into targettab(datecol,<othercols....>)
select cast(datefield as datetime2),<othercols...> from sourcetab

你可以使用cast函数

于 2016-09-07T06:29:54.600 回答
0

您需要先转换为 char 因为转换为 int 会增加那些天数1900-01-01

select CONVERT (datetime,convert(char(8),rnwl_efctv_dt ))

这里有些例子

select CONVERT (datetime,5)
1900-01-06 00:00:00.000

select CONVERT (datetime,20100101)

爆炸了,因为你不能将 20100101 天添加到 1900-01-01 ..你超出了限制

先转换为char

declare @i int
select @i = 20100101
select CONVERT (datetime,convert(char(8),@i))
于 2016-09-07T06:35:15.570 回答
-1
SELECT convert(varchar, StartDATE , 113) from ur table
于 2016-09-07T06:34:03.413 回答