我有这部分查询:
(@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
这是怎么回事?
最佳答案
看来错误出在您查询中 CAST 内的子句上。我猜你试图减去的 pm5.meta_value
和 pm4.meta_value
的数据类型不是数字。因此,请在减去之前先将它们转换为小数。示例代码如下。
@tmpo1245 := CAST( ( (
CAST( pm5.`meta_value` AS DECIMAL) - CAST( pm4.`meta_value` AS DECIMAL)) / 86400 )
AS SIGNED )
关于MySQL DATE_SUB 不使用变量但使用常规值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214846/