#mysql
#mysql
Вопрос:
Я знаю это:
$StartDate = '2019-05-01';
$EndDate = '2019-05-30';
В чем была бы моя ошибка, если бы я хотел выбрать строки, которые содержат мои $date
в диапазоне RAT_DateStart
и RAT_DateEnd
?
На самом деле у меня есть этот запрос?
SELECT * FROM ___Rates
WHERE (RAT_DateStart BETWEEN :StartDate AND :EndDate)
OR (RAT_DateEnd BETWEEN :StartDate AND :EndDate);
Моя таблица выглядит следующим образом:
|--------|---------------|-------------|
| RAT_Id | RAT_DateStart | RAT_DateEnd |
|--------|---------------|-------------|
| 1 | 2019-04-10 | 2019-09-24 |
| 2 | 2019-02-03 | 2019-04-15 |
|--------|---------------|-------------|
Спасибо за вашу помощь.
Комментарии:
1. Вы хотите, чтобы обе даты (
$StartDate
и$EndDate
) содержались в диапазоне, указанномRAT_DateStart
иRAT_DateEnd
?2. @Nick, на самом деле запрос не возвращает мне ни одной строки. Он должен вернуть мне первый, поскольку известный диапазон дат — это диапазон моей первой строки в таблице.
Ответ №1:
Возможно, решение Nick — это то, что вам нужно, но следующий запрос является более типичным…
SELECT c.olumns
, y.ou
, a.ctually
, w.ant
FROM ___Rates
WHERE :StartDate < RAT_DateEnd
AND :EndDate >= RAT_DateStart;
Ответ №2:
Если вы хотите, чтобы даты начала и окончания ( $StartDate
и $EndDate
) содержались в диапазоне, указанном RAT_DateStart
and RAT_DateEnd
, тогда вам нужно реорганизовать ваше WHERE
предложение:
SELECT * FROM ___Rates
WHERE (:StartDate BETWEEN RAT_DateStart AND RAT_DateEnd)
AND (:EndDate BETWEEN RAT_DateStart AND RAT_DateEnd);
Вывод (для ваших выборочных данных):
RAT_Id RAT_DateStart RAT_DateEnd
1 2019-04-10 00:00:00 2019-09-24 00:00:00