как сравнить диапазон дат в столбце varchar - PullRequest
1 голос
/ 15 августа 2011

У меня есть два столбца varchar (30), startDate и endDate, и в этом столбце есть значения дат, а также нули.Я хочу сравнить диапазон дат в SQL Server 2005/2008.что-то вроде

WHERE e2.type=1
   AND coloumn1 between convert(datetime,startDate,101) and convert(datetime,endDate,101)

Когда я пытаюсь выполнить, выдает ошибку, преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона.

1 Ответ

1 голос
/ 15 августа 2011

Это сообщение об ошибке указывает на то, что значение, хранящееся в varchar, не может быть преобразовано (с помощью SQL) в datetime. Вам нужно будет детализировать свои данные и найти проблемные строки, что может быть непросто. Начните с чего-то вроде:

SELECT StartDate, isdate(StartDate)
 from MyTable
 where StartDate is not null
  and isdate(StartDate) = 0

... и то же самое для EndDate. Вам придется поиграть с этим, так как преобразование строки в дату может стать хитрым быстро. (Излишне говорить, что было бы гораздо лучше хранить значения даты и времени в качестве значений даты и времени. Если вы можете изменить структуру таблицы, сделайте это!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...