Эти два не совпадают!
WHERE EncDate BETWEEN '2010-04-30' AND GETDATE() - 1
WHERE EncDate > '2010-04-29' AND EncDate < GETDATE()
Они будут давать одинаковый набор результатов , если EncDate
- это дата без компонента времени . В противном случае они различаются.
Общая рекомендация заключается в использовании:
WHERE EncDate >= '2010-04-30' AND
EncDate < CONVERT(DATE, GETDATE())
Это имеет то же значение в отношении наличия или отсутствия компонента времени.
Я вполне уверен, что с точки зрения оптимизации, это точно так же. При работе с базами данных что-то меньшее, чем сравнение времени, обычно никак не повлияет на производительность - дорогостоящие операции перемещают данные.
Аарон Бертран очень хорошо обсудил использование BETWEEN
стипы данных дата / время, называемые Что общего между дьяволом и общим .