Задать вопрос
dimastik1986
@dimastik1986
учусь

Как изменить запрос для правильной выдачи?

мне нужен запрос, который бы выводил записи до ДНЯ наступления которых осталось не более 2 дней.
при этом из даты меня интересует именно день, остальные значения(месяц и год) могут быть какими угодно, а сама запись циклично должна появляться каждый месяц по условию описанному выше...

попробовал составить запрос:
SELECT
    *
FROM
    `list`
WHERE
    DAYOFMONTH(close) BETWEEN DAYOFMONTH(NOW()) AND DAYOFMONTH(NOW() + INTERVAL 2 DAY)
ORDER BY
    `close`
DESC


ок работает почти как надо, за исключением того, что сегодня я получил 0, т.е. как я понял 29 апреля + 2 дня = несуществующая дата. Сами записи на 30 апреля и на 1 мая в БД присутствуют!
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dass45
SELECT
    *
FROM
    `list`
WHERE
    IF (
        DAYOFMONTH(NOW() + INTERVAL 2 DAY) > DAYOFMONTH(NOW()),
        DAYOFMONTH(close) BETWEEN DAYOFMONTH(NOW()) AND DAYOFMONTH(NOW() + INTERVAL 2 DAY),
        (DAYOFMONTH(close) >= DAYOFMONTH(NOW()) OR DAYOFMONTH(close) <= DAYOFMONTH(NOW() + INTERVAL 2 DAY))
    )
ORDER BY
    `close`
DESC
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Что-то типа такого:
WHERE CONCAT(MONTH(`date`), '.', DAYOFMONTH(`date`)) IN (
    CONCAT(MONTH(CURDATE()), '.', DAYOFMONTH(CURDATE())), 
    CONCAT(MONTH(CURDATE() + INTERVAL 1 DAY), '.', DAYOFMONTH(CURDATE() + INTERVAL 1 DAY))
)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы