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

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

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

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

20140804

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

2014-08-04 00:00:00.0000000.

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

Любая помощь приветствуется.

0
user3052850 7 Сен 2016 в 09:24

3 ответа

Лучший ответ
Insert into targettab(datecol,<othercols....>)
select cast(datefield as datetime2),<othercols...> from sourcetab

Вы можете использовать функцию cast

2
Akshey Bhat 7 Сен 2016 в 06:29

Вам нужно сначала преобразовать в 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 .. вы превышаете лимит

Сначала преобразовать в символ

declare @i int
select @i = 20100101
select CONVERT (datetime,convert(char(8),@i))
0
Tamilmani Purushothaman 7 Сен 2016 в 06:35
SELECT convert(varchar, StartDATE , 113) from ur table
-1
KyLim 7 Сен 2016 в 06:34