@ygen

Как создать запрос типа %-_[1-9]-%?

Есть бд, не получается сформировать запрос.
В таблице есть поле следующего содержания: `10-08-2016`
Хотелось бы сделать выборку по кварталам. В данном случае - выборка за 9 месяцев.

Использую запрос:
SELECT * FROM users.data WHERE date_sp LIKE "%-_[1-9]-%"

следуя логике - должен вывести запись с датой `10-08-2016`. Но к сожалению, возвращает пустой результат.
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@pcdesign
SELECT * FROM users.data WHERE STR_TO_DATE(date_sp,' %d-%m-%Y') > DATE_SUB(now(), INTERVAL 9 MONTH)


Если поле varchar
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Immortal_pony
@Immortal_pony Куратор тега MySQL
На всякий случай.
LIKE не умеет в диапазон допустимых значений, зато умеет REGEXP. И хотя в данном случае более правильным вариантом будет использование STR_TO_DATE, но в некоторых схожих случая такое невозможно.
Вариант решения проблемы с REGEXP:

SELECT * FROM users.data WHERE date_sp REGEXP "^(\d{2})-0[1-9]-(\d{4})$"
Ответ написан
Комментировать
@ygen Автор вопроса
да, я бы так и сделал, но есть одно НО. поле - типа varchar, база уже была готова ранее и надо прикрутить к ней отчеты. :( приходится извращаться чтобы прикрутить.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы