MySQL DATE_SUB не работает с переменной, но работает с обычным значением - PullRequest
1 голос
/ 07 марта 2011

У меня есть эта часть запроса:

(@tmpo1245 := CAST( ( ( pm5.`meta_value` - pm4.`meta_value` ) / 86400 ) AS SIGNED ) ) AND
(@mutdate:=DATE_SUB( '2011-06-1', INTERVAL @tmpo1245 DAY ) ) AND

Что приводит к сбою моего запроса. Я знаю, CAST( ( ( pm5. meta_value - pm4. meta_value ) / 86400 ) AS SIGNED ) равно 5, я поместил его в оператор выбора, чтобы проверить его. Я также знаю, что следующий запрос прекрасно работает:

(@tmpo1245 := 5 ) AND
(@mutdate:=DATE_SUB( '2011-06-1', INTERVAL @tmpo1245 DAY ) ) AND

Что происходит?

1 Ответ

1 голос
/ 07 марта 2011

Кажется, ошибка в предложении внутри CAST.Я предполагаю, что типы данных pm5. meta_value и pm4. meta_value, которые вы пытаетесь вычесть, не являются числовыми.Поэтому, пожалуйста, перед тем как вычесть, приведите их к десятичной дроби.Пример кода будет следующим.

@tmpo1245 := CAST( ( ( 
    CAST( pm5.`meta_value` AS DECIMAL) - CAST( pm4.`meta_value` AS DECIMAL)) / 86400 ) 
    AS SIGNED )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...