2016-09-07 202 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))