2015-01-06 5 views
0

У меня есть выполнить новый запрос, как показано ниже:Преобразование типа NVARCHAR данных в DateTime

alter table tenancy_extend_old alter column createdate datetime 

но показывать сообщения об ошибке, как показано ниже: Msg 242, Level 16, State 3, линия 1 преобразование типа данных nvarchar в тип данных даты и времени приводило к значению вне диапазона. Заявление было прекращено.

Пожалуйста, помогите мне. спасибо

+4

у вас есть плохие данные из-за плохие данные выбор типа. Вы можете идентифицировать его, используя это (возможно): 'SELECT createdate FROM dbo.tenancy_extend_old WHERE ISDATE (createdate) = 0;' –

+0

У вас есть данные в таблице. И если да, то это только данные datetime? –

+0

Да, у меня есть данные, например, 18 декабря – Izan

ответ

0

Я предлагаю вам:

-Создания нового столбца под названием что-то вроде CD типа datetime -Обновления данные accross, используя подходящий формат. Если данные последовательно в формате 18 декабря 2001 (который, вероятно, не предполагая, что старый столбец VARCHAR), то вы можете использовать это:

UPDATE tenancy_extend_old 
SET CD = CONVERT(DATETIME,createdate ,100) 

Это, скорее всего, вы получите ту же ошибку, потому что кто-то выбрал неправильный типа данных изначально, так что вы должны будете использовать Aarons предложение, чтобы найти плохие данные

После того, как вы сделали это, удалить старую колонку и переименовать новый столбец