Преобразование из nvarchar в datetime

r18romik
Дата: 22.02.2013 09:49:02
Люди, помогите пожалуйста решить делему.

Нужно преобразовать строковую дату формата 01.01.2012 в формат datetime
И ещё добавить замену replace.
В date преобразует без проблем, пример ниже, в datetime не хочет выдает ошибку: "Преобразование типа данных nvarchar в тип данных datetime привело к выходу значения за пределы диапазона."

convert(date, left(replace(v.Data_registratsii_dogovora,'01.01.0001','01.01.2000'), 10), 104) CONTRACT_DATE
r18romik
Дата: 22.02.2013 09:49:28
v.Data_registratsii_dogovora = 01.01.2012
r18romik
Дата: 22.02.2013 09:50:17
Как преобразовать эту строку left(replace(v.Data_registratsii_dogovora,'01.01.0001','01.01.2000'), 10)
в datetime?
Ennor Tiegael
Дата: 22.02.2013 09:58:05
Указанная вами дата конвертится без проблем. Видимо, у вас в столбце где-то есть значения даты в другом формате, ну или вообще не дата. На них сиквел и ругается.

Смотрите в сторону функции ISDATE(), что ли.
r18romik
Дата: 22.02.2013 10:02:08
Напишите пожалуйста как вы делали? Хотите сказать эта строка: left(replace(v.Data_registratsii_dogovora,'01.01.0001','01.01.2000'), 10) конвертится в datetime ? Я пробовал так: CONVERT (datetime, left(replace(v.Data_registratsii_dogovora,'01.01.0001','01.01.2000'), 10), 120)
r18romik
Дата: 22.02.2013 10:03:15
Насчет не даты в столбце догадывался, но там слишком много строк, чтобы это проверить.
r18romik
Дата: 22.02.2013 10:04:12
Проверю сейчас через ISDATE()
r18romik
Дата: 22.02.2013 10:13:17
ISDATE() вернул везде 1
r18romik
Дата: 22.02.2013 10:13:33
Напишите пожалуйста как вы делали? Хотите сказать эта строка: left(replace(v.Data_registratsii_dogovora,'01.01.0001','01.01.2000'), 10) конвертится в datetime ? Я пробовал так: CONVERT (datetime, left(replace(v.Data_registratsii_dogovora,'01.01.0001','01.01.2000'), 10), 120)
Glory
Дата: 22.02.2013 10:14:31
r18romik
'01.01.0001'

BOL - datetime Description
Date range - January 1, 1753, through December 31, 9999

BOL - date Description
Range 0001-01-01 through 9999-12-31 January 1, 1 A.D. through December 31, 9999 A.D.