Я пытаюсь сделать тот SELECT
, который принесет мне все записи между двумя датами. Однако я хочу игнорировать время (часы, минуты, секунды и т.д.). Например, у меня есть запись, в которой есть 2016-11-14 11:47:56.207
, но я отправляю по параметру stored procedure
только свой 14-11-2016
. Если я отправлю это так, я не получу никакого результата.
WHERE GRP.GRP_Fecha BETWEEN @desde AND @hasta
В вашем случае я предлагаю вам избегать любого решения, которое включает в себя выполнение
convert
того или иного типа преобразования с полемGRP_Fecha
. Делая это, вы не позволяете SQL Server использовать индекс, если он существует для поля,GRP_Fecha
и это может повлиять на вашу производительность очень очевидным образом.И, конечно
between
, это не идеально в этом конкретном случае по причинам, уже упомянутым в вашем вопросе.Я предлагаю следующее условие для наилучшей производительности (хорошее использование индексов) и во избежание проблем с часами:
В случае, если:
@desde
знак равно2016-11-01
@hasta
знак равно2016-11-14
... условие равно:
При запросе дат до
2016-11-15
, это включает все даты2016-11-14
вне зависимости от времени.Я решил проблему с
convert
. Для вашего случая это будетЭто будет работать для вас, даже если он имеет формат Год/месяц/день: Час:Мин:Сег.