Согласно комментариям, это из-за типа varchar
.
Оператор between
ничем не отличается от выполнения двух закрытых неравенств для своих пределов диапазона. В вашем примере
between 12/27/2018 And 01/27/2019
будет внутренне изменено на
>= 12/27/2018 and <= 01/27/2019
но это не даты, а текст. А второй меньше первого, поэтому ничего не будет возвращено. Это все равно что задавать вопрос: какое письмо следует за q, но перед b? Ни один.
Либо измените поля на datetime, либо используйте функции преобразования в вашем запросе.