SQL-запрос, чтобы проверить, близка ли дата к сегодняшнему дню - PullRequest
3 голосов
/ 12 марта 2011

Вот таблица:

orders(id, item, deliveryDate, courier_id)

Я хотел бы написать запрос, который будет возвращать все заказы для данного курьера с датой доставки, которая находится в течение месяца с сегодняшнего дня. Как мне это сделать?

Ответы [ 3 ]

1 голос
/ 12 марта 2011

Большинство серверов используют целую часть даты в днях.

В этом примере я использую "Now ()" в качестве серверной функции, которая возвращает текущую дату.Вы должны найти правильный вариант в документации по используемому вами серверу.

(также знак? В качестве значения идентификатора курьера)

Select * 
From orders
Where Now() - deliveryDate < 30
And courier_id = ?

Если ваш сервер не держит дни -Вы можете посмотреть на его функции преобразования даты

0 голосов
/ 12 марта 2011

В T-SQL:

SELECT *
FROM orders
WHERE deliveryDate BETWEEN GETDATE() AND GETDATE() + 30
  AND courier_id = @CourierID

РЕДАКТИРОВАТЬ

Хотя период в этом решении рассчитан примерно на месяц, он неровно через месяц, как аккуратно заметил дядя Брэд .Если вам нужно быть точным, вы должны рассчитать один месяц с текущей даты следующим образом: DATEADD(month, 1, GETDATE()).Это заменяет GETDATE() + 30 в приведенном выше запросе.

0 голосов
/ 12 марта 2011

Если MySQL

DATE_ADD

SELECT * FROM orders WHERE deliveryDate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 MONTH);
...