Как я могу сделать запрос из двух диапазонов дат (mysql) - PullRequest
0 голосов
/ 23 января 2009

Я хочу получить письма от 40 дней назад и 20 дней назад, каждый диапазон составляет 1 день. Это то, что у меня есть, но оно не возвращает строк.

SELECT s.*, r.email FROM sellyourcar s 
     INNER JOIN register r ON s.rid = r.slno 
     WHERE s.dt BETWEEN DATE_SUB(curdate(),INTERVAL 20 DAY) AND DATE_SUB(curdate(), INTERVAL 19 DAY) AND 
     s.t BETWEEN DATE_SUB(curdate(),INTERVAL 40 DAY) AND DATE_SUB(curdate(), INTERVAL 39 DAY)

1 Ответ

2 голосов
/ 23 января 2009

Вы должны использовать ИЛИ вместо двух интервалов:

SELECT s.*, r.email 
FROM sellyourcar s INNER JOIN register r ON s.rid = r.slno 
WHERE s.dt BETWEEN DATE_SUB(curdate(),INTERVAL 20 DAY) AND DATE_SUB(curdate(), INTERVAL 19 DAY) 
OR s.dt BETWEEN DATE_SUB(curdate(),INTERVAL 40 DAY) AND DATE_SUB(curdate(), INTERVAL 39 DAY)

Как еще одно замечание, по крайней мере в Oracle, я не уверен, что в MYSQL функции BETWEEN также возвращают элементы, соответствующие конечным элементам. Например, от 3 до 5 также будет возвращать элементы, которые были 3 и 5, а не только 4. Таким образом, вы можете просто проверить, если дата электронного письма на 20 или 40 дней меньше текущей даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...