У меня есть выбор, где мне нужно убедиться, что мой adate varchar (8) находится между двумя датами.Получение ошибки при попытке сравнить две даты
иногда переданные значения имеют значение NULL, поэтому я бы показал все.
select something from myTable where
convert(date, adate) >= ISNULL(convert(date,@beginDate), convert(date, adate))
работает отлично
, но когда я делаю это:
select something from myTable where
convert(date, adate) >= ISNULL(convert(date,@beginDate), convert(date, adate))
and convert(date, adate) <= ISNULL(convert(date,@endDate), convert(date, adate))
я получаю:
Конверсия удалось при преобразовании даты и/или времени из строки символов.
или я могу сделать < = строка без> = без ошибок, но не оба вместе, что происходит?
две линии выглядят одинаково, я не могу понять, что я делаю неправильно здесь .....
Вы даете нам образец данных, которые вы используете? Какие СУБД вы используете? Как первый взгляд, я бы сказал, что endDate не имеет того же формата, что и beginDate, но не уверен в этом. – araknoid
Вы используете данные 'char'acter здесь? – Paul
Почему вы их конвертируете? Не работает ли 'adate <= @ beginDate'? Даже если вы используете (о, ужас!) 'CHAR (8)' для дат, нормальный формат будет избегать всех этих преобразований. –