Я включил в инструкцию «in» данные, содержащиеся в logdate.Как преобразовать эту строку даты в datetime?
по какой-то причине я не могу их преобразовать. Я больше привык к оракулам баз данных, которые обрабатывают этот материал более прощающим образом. Поэтому я изо всех сил пытаюсь понять, что происходит не так.
select CONVERT(DATETIME,opencall.logdate,102)
from opencall
where logdate in
( '17/08/2016 10:33:08'
,'17/08/2016 10:33:13'
,'17/08/2016 10:33:17'
,'17/08/2016 10:34:03'
,'17/08/2016 10:34:14'
,'17/08/2016 10:34:46')
;
я получаю ошибку [S0003] [242] Преобразование типа данных VARCHAR к типу DateTime данных привело к значению вне-диапазона.
и я попытался
select cast(opencall.logdate as datetime)
from opencall
(
'17/08/2016 10:33:08'
,'17/08/2016 10:33:13'
,'17/08/2016 10:33:17'
,'17/08/2016 10:34:03'
,'17/08/2016 10:34:14'
,'17/08/2016 10:34:46'
)
я получаю ошибку [S0003] [242] Преобразование типа данных VARCHAR к типу DateTime данных привело к значению вне-диапазона.
Что я делаю неправильно на этот раз?
:-)
Ваш сервер принимает 'MM формат/DD/YYYY' так' 17/08/2016' рассмотреть '17' в месяц,' 08', как дата, так что он бросает erroe – Arulkumar
из диапазона происходит потому, что формата DD/MM, поэтому SQL читает его как месяц 17, который не существует. – scsimon
Кроме того, Sql Server обрабатывает значения datetime без компонента полного времени, как если бы оставшаяся часть компонента времени была равна нулю. Этот запрос будет работать, только если таблицы 'opencall' имеют значения, которые ** точно совпадают' 17/08/2016 10: 33: 08.000', '17/08/2016 10: 33: 13.000',' 17/08/2016 10: 33: 17.000' и т. Д. Любые дробные значения второго значения, хранящиеся в таблице _WILL_, прерывают этот запрос. –