INTERVAL
- это не тип данных , а ключевое слово , которое преобразует понятную человеку строку «длительность» в целое число.Таким образом, «приведение к INTERVAL
» не имеет смысла.
Если ваш «интервальный» ввод является переменным, это может сработать, но вы не можете взять всю вещь из строки больше, чем можете«приведите» строку "SELECT * FROM tbl"
в выражение запроса.Вы можете использовать переменную для числового операнда (см. Ниже), но я думаю, что это так.
SELECT DATE_SUB(NOW(), INTERVAL `x` DAY) FROM `tbl`;
Вам придется прибегнуть к CASE
, если вы хотите, чтобы логика была сильнее этой.Или ... хранить целочисленные длительности в первую очередь.