SQL Server:将StartDATE 20140804 Nvarchar转换为Datetime2

时间:2016-09-07 06:24:10

标签: sql-server nvarchar datetime2

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

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

  

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

nvarchar(50)列中当前的数据如下所示:

20140804

我需要将其转换为:

2014-08-04 00:00:00.0000000.

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

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

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

您可以使用cast功能

答案 1 :(得分: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)

爆炸,因为您无法在1900-01-01之间添加20100101天......超出限制

首先转换为char

declare @i int
select @i = 20100101
select CONVERT (datetime,convert(char(8),@i))

答案 2 :(得分:-1)

SELECT convert(varchar, StartDATE , 113) from ur table