mysql приведен как интервал

можно ли использовать интервал в MySQL?

Я хочу оценить значение из запроса как интервал, например:

select DATE_SUB(NOW(),CAST(user.expiry_interval AS interval))

где user.expiry_interval — «ИНТЕРВАЛ 1 НЕДЕЛЯ» или что-то в этом роде

select DATE_SUB(NOW(),CAST('INTERVAL 1 week' AS INTERVAL))

person PeterL    schedule 22.09.2011    source источник
comment
вопрос, на который вы ссылались, был полезен, спасибо.   -  person PeterL    schedule 22.09.2011


Ответы (1)


INTERVAL – это не тип данных, а ключевое слово, которое преобразует удобочитаемую строку "длительность" в целое число. Таким образом, «приведение к INTERVAL» не имеет смысла.

Если ваш ввод «интервал» является переменным, то это может работать, но вы не можете взять все это из строки больше, чем вы можете «преобразовать» строку "SELECT * FROM tbl" в выражение запроса. Вы можете использовать переменную для числового операнда (см. ниже), но я думаю, что это все.

SELECT DATE_SUB(NOW(), INTERVAL `x` DAY) FROM `tbl`;

Вам придется прибегнуть к CASE, если вам нужна более сильная логика. Или... сначала сохраните целые длительности.

person Lightness Races in Orbit    schedule 22.09.2011