Вопрос

У меня есть таблица заголовков заказов под названием "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 в полночь, не будут включены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top