Мне нужна помощь с помощью простого запроса. Я хочу выбрать данные из таблицы, где дата находится на этой неделе, но мне не нужны записи, в которых установлена дата. Так что если сегодня понедельник, то я хочу только данные со вторника по пятницу.
Это была моя лучшая попытка.
SELECT *
FROM data
WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK)
Как я могу улучшить это?
Вы можете использовать between
и subdate
SELECT * FROM 'data' WHERE 'date'
BETWEEN SUBDATE(CURDATE(), 7) AND SUBDATE(CURDATE(), 1);
Вы можете использовать между собой и пойти один день назад с сегодняшнего дня.
SELECT * FROM data WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK) AND DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Имейте в CURDATE()
что я использовал CURDATE()
вместо NOW()
поскольку curdate содержит только дату без времени.
Вы хотите использовать CURDATE()
Функция CURDATE() возвращает текущую дату.
Примечание. Эта функция возвращает текущую дату в формате "ГГГГ-ММ-ДД", если используется в контексте строки, и в формате YYYYMMDD, если используется в числовом контексте.
И DATE()
Функция DATE() извлекает значение даты из выражения даты или даты и времени.
SELECT * FROM data WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK) AND DATE(date) < CURDATE();
Это позволит эффективно превратить ваши данные в ГГГГ-ММ-ДД и сравнить их с ГГГГ-ММ-ДД
AND date != NOW()
?