2016-05-10 3 views
0

В SQL Server У меня есть столбец с именем dateCreation, который называется varchar (50), и я хотел бы преобразовать его в тип datetime. Если изменить тип столбца, чтобы DateTime с MS среде SQL Server Management Studio, я получаю следующее предупреждение:Преобразование varchar в datetime в таблице sqlserver

'atPropostes' table 
- Warning: Data might be lost converting column 'dateCreation' from 'varchar(50)'. 

Тогда Если я исполню это:

SELECT CONVERT(Datetime, dateCreation, 120) as dateCreation from atPropostes -- to convert it to Datetime 

Я получаю следующее сообщение об ошибке:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. 

что бы лучший способ к (1) изменить тип столбца DateTime и (2) конвертировать все регистры из varchar (50) в тип Datetime?

Спасибо!

+2

У вас, вероятно, есть значения в столбце, которые не могут быть преобразованы в 'DATETIME'. Вы уверены, что все значения являются допустимыми датами, следуя одному и тому же формату? –

ответ

0

Я предполагаю, что вы используете SQL Server 2012

Попробуйте как этот

SELECT TRY_CONVERT(DATETIME, dateCreation, 120) AS dateCreation 
FROM atPropostes 

Примечание: Пожалуйста, убедитесь, что ваша дата хранится в типе VARCHAR имеют последовательный формат даты. Это должно быть что-то вроде yyyy-mm-dd или mm-dd-yyyy или .....

+0

Я использую SQL SERVER 2008 R2, TRY_CONVERT не распознается. Благодарю. Но мой вопрос: должен ли я сначала изменить тип столбца, а затем выполнить преобразование или наоборот или все вместе в одном действии? – Mitteg

Смежные вопросы