MySQL DATE_SUB不使用变量,但使用常规值
我有一个问题的这一部分:MySQL DATE_SUB不使用变量,但使用常规值,mysql,sql,Mysql,Sql,我有一个问题的这一部分: (@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_值-pm4.meta_值)/86400)是有符号的)是5,我把它放在select语句中测试它。我还知道以下
(@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_值-pm4.
meta_值)/86400)是有符号的)
是5,我把它放在select语句中测试它。我还知道以下查询工作正常:
(@tmpo1245 := 5 ) AND
(@mutdate:=DATE_SUB( '2011-06-1', INTERVAL @tmpo1245 DAY ) ) AND
发生了什么事?似乎是查询中的CAST中的子句出错了。我猜pm5.
meta_值
和pm4.meta_值
的数据类型不是数字。因此,在进行减法之前,请先将它们转换为小数。示例代码如下所示
@tmpo1245 := CAST( ( (
CAST( pm5.`meta_value` AS DECIMAL) - CAST( pm4.`meta_value` AS DECIMAL)) / 86400 )
AS SIGNED )
错误似乎与查询中的强制转换内的子句有关。我猜pm5.
meta_值
和pm4.meta_值
的数据类型不是数字。因此,在进行减法之前,请先将它们转换为小数。示例代码如下所示
@tmpo1245 := CAST( ( (
CAST( pm5.`meta_value` AS DECIMAL) - CAST( pm4.`meta_value` AS DECIMAL)) / 86400 )
AS SIGNED )