2014-09-18 3 views
0

Мне нужно изменить тип данных для столбца от Datetime2(7) до Datetime, где у меня много записей с этим форматом, поэтому, когда я пытаюсь изменить тип данных, я получаю следующую ошибку:Изменить Datetime2 на Datetime в SSMS

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

Как я могу изменить данные, а затем изменить тип данных для этого столбца? Причина, по которой мне нужно переключиться на менее точный тип данных для приложения, где оно несовместимо. Это приложение подключается напрямую, поэтому никакое преобразование не может быть выполнено в коде. Я работаю в SSMS.

Fixed один столбец с:

select *, cast(calldate as datetime)) * from records 

Но не для другого столбца, используя тот же Cast - это дает неработающей ошибки диапазона. Возможно, некоторые поля являются нулевыми - это будет проблемой? Если это так, я попробовал это (такая же ошибка):

select *, cast(closedate as datetime) from records where closedate is not null 
+0

Попробуйте найти здесь. http://stackoverflow.com/questions/11081571/how-to-cast-datetime2-as-datetime. Edit: В ореховой оболочке используйте Datepart, чтобы разделить datetime2 на кусочки и использовать эти фрагменты для создания Datetime – gmalenko

+0

Я видел это, я просто не понимаю код. – OneFineDay

+0

Я исправил один столбец, теперь другой ошибочен. – OneFineDay

ответ

0
DECLARE @TestTime as DateTime2 
SET @TestTime = (SELECT CAST(GetDate() as datetime2)) 

SELECT CAST(@TestTime AS datetime) 

Когда я побежал он @TestTime = "2014-09-24 15: 39: 02.7970000" после первого набора.
Результат был «2014-09-24 15: 39: 02.797»

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