2016-09-07 113 views
0

我正在使用SQL Server 2008,并从平面文件进行了导入。我无法正确导入datetime列,因此我暂时将其指定为nvarchar(50)SQL Server:将StartDATE 20140804 Nvarchar转换为Datetime2

现在我想将它转换为datetime2格式。但是,如果这样做,我得到错误

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

的数据表明,目前在我nvarchar(50)列如下:

20140804 

,我需要将其转换为:

2014-08-04 00:00:00.0000000. 

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

任何帮助是appre ciated。

回答

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

可以使用cast功能

+0

谢谢你,这个工作。我也试过SELECT CONVERT(datetime2,StartDATE,12),它工作正常。但是,由于某些原因,当我处理我的EndDATE时,从字符串转换日期和/或时间时收到错误转换失败。 – user3052850

+0

EndDATE的格式是什么? –

-1
SELECT convert(varchar, StartDATE , 113) from ur table 
+0

OP想要转换为'datetime2' - 而不是其他类型的字符串... –

0

需要,因为转换为INT增加了那些日子转换第一个CHAR到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..you上面去了极限

转换为char第一

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