2016-09-07 7 views
0

Я использую SQL Server 2008, и я сделал импорт из плоского файла. Я не смог правильно импортировать столбец datetime, поэтому я временно указал его как nvarchar(50).SQL Server: convert StartDATE 20140804 Nvarchar to Datetime2

Теперь я хочу преобразовать его в формат datetime2. Однако при этом я получаю сообщение об ошибке

Ошибка преобразования при преобразовании даты и/или времени из символьной строки.

Данные, которые в настоящее время в моей nvarchar(50) колонке выглядит следующим образом:

20140804 

И мне нужно, чтобы преобразовать его в:

2014-08-04 00:00:00.0000000. 

Обратите внимание, что я не только хочу, чтобы преобразовать одну дату, но все значения StartDATE в таблице и вставьте их в другую таблицу

Любая помощь is appre лем, связанных.

ответ

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

вам нужно преобразовать в обугливается первый из-за преобразования в междунар добавляет те дни к 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 идти выше предела

новообращенный обугливается первый

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