SQL - запрос по диапазону дат
Вопрос
У меня есть таблица заголовков заказов под названием "OrderH". В этой таблице есть столбец с именем «OrderDate». Я пытаюсь получить заказы с датой в определенном диапазоне. Я думал, что смогу сделать это с помощью «между» Ключевое слово, но мне не повезло. Это тот SQL, который я волнуюсь:
select
*
from
OrderH h
where
h.OrderDate between '2009-06-16' and '2009-06-01'
order by
h.OrderDate desc
Что я делаю не так?
Решение
меньшая дата должна быть первой
between '2009-06-01' and '2009-06-16'
вместо
between '2009-06-16' and '2009-06-01'
Также будьте осторожны при использовании между, потому что вы получите полуночное значение от большей даты и ничего больше
Посмотрите на Как работать с датами в SQL Server?
Другие советы
Запрос не работает, потому что в вашем примере первая дата больше, чем вторая. Поменяйте местами даты. Первое должно быть меньше, чем второе.
Трудно найти даты, которые заканчиваются до их начала. Измените минимальное и максимальное ...
h.OrderDate between '2009-06-01' and '2009-06-16'
select
*
from
OrderH h
where
h.OrderDate between '2009-06-01' and '2009-06-16'
order by
h.OrderDate desc
В MS-SQL Server события, происходящие после 2009-06-16 в полночь, не будут включены.