2009-06-17 7 views
1

У меня есть таблица заголовка заказа под названием «OrderH». В этой таблице есть столбец «OrderDate». Я пытаюсь получить заказы с датой в определенном диапазоне. Я думал, что могу выполнить это с ключевым словом «между», но мне не повезло. Это тот SQL, с которым я столкнулся:SQL - запрос по дате

select 
    * 
from 
    OrderH h 
where 
     h.OrderDate between '2009-06-16' and '2009-06-01' 
order by 
    h.OrderDate desc 

Что я делаю неправильно?

+0

Вы используете MSSQL или MySQL –

+0

Пожалуйста, добавьте дополнительную информацию о том, какие СУБД это, описание рассматриваемой таблицы, сообщения об ошибках, если они есть, и т. Д. –

+0

Если MySQL: ваш OrderDate столбец типа «дата» или «дата», временная метка "? –

ответ

8

меньший срок должен быть первым

between '2009-06-01' and '2009-06-16' 

вместо

between '2009-06-16' and '2009-06-01' 

Также будьте осторожны при использовании между, потому что вы получите значение в полночь с большей даты и ничего

Взглянуть на How Does Between Work With Dates In SQL Server?

+1

Ничего себе. Мне нужно больше кофе. Не могу поверить, что я пропустил что-то настолько простое. –

0
select 
    * 
from 
    OrderH h 
where 
     h.OrderDate between '2009-06-01' and '2009-06-16' 
order by 
    h.OrderDate desc 
1

Запрос не работает, потому что в вашем примере первая дата больше второй. Поменяйте даты. Сначала должно быть меньше, чем вторая дата.

1

Трудно найти даты, которые заканчиваются до их начала. Изменение минимального и максимального ...

h.OrderDate between '2009-06-01' and '2009-06-16' 
0

В MS-SQL Server события, происшедшие после 2009-06-16 в полночь, не будут включены.

Смежные вопросы