Как правильно сделать запрос в бд?

Есть таблица в бд с датой формата 0000-00-00 00:00:00
Надо сделать запрос по условию. Входные данный месяц и год в формате mm.yy

Запрос вида SELECT * FROM table WHERE date = '10.21' - выдает ошибку Incorrect DATETIME value: '10.21'

Какой надо запрос делать, чтобы искать в базе данных по месяцу и году?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Я даже не представляю, сколько раз на этот запрос здесь уже отвечали. Но разве ж тут что найдёшь...
WHERE date BETWEEN '2021-10-01 00:00:00' and '2021-10-30 23:59:59'
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
как сформировать запрос чтоб было равенство 2021-10-30 23:59:59 = 10.21

Если критерий предоставляется именно в такой форме - '10.21',- то
SELECT * 
FROM `table` 
JOIN ( SELECT '10.21' AS parameter) criteria
    ON  `date` >= CONCAT('20', SUBSTRING_INDEX(parameter, '.', -1), '-', SUBSTRING_INDEX(parameter, '.', 1), '-', '01' AS DATE)
    AND `date` < CONCAT('20', SUBSTRING_INDEX(parameter, '.', -1), '-', SUBSTRING_INDEX(parameter, '.', 1), '-', '01' AS DATE) + INTERVAL 1 MONTH

Условие - SARGable.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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