Я бы предложил вам сохранить BATCHDT в качестве типа данных DATE, чтобы избежать путаницы со значениями времени, которые будут поставляться с DATETIME.
Кроме того, предлагаем вам использовать ISO 8601 стандарт для представления дат.
МЕЖДУ включающим оператором. Итак, ниже
BETWEEN '2018-01-01' AND '2018-05-01'
превратится в
BETWEEN '2018-01-01 00:00:00.000' AND '2018-05-01 00:00:00.000'
Таким образом, он не будет возвращать значения, приходящиеся на дату 2018-05-01. Таким образом, вы должны подать заявление ниже условия
BETWEEN '2018-01-01 00:00:00.000' AND '2018-05-01 23:59:59.997'
Вместо этого я бы предложил вам перейти к оператору DATE, что очень просто для BATCHDT.
BETWEEN '2018-01-01' AND '2018-05-01'