MySQL DATE_SUB 不使用变量但使用常规值

标签 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_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/

相关文章:

php - 准备好的语句的安全/服务器系统日志记录

mysql - 如何在不将 csv 保存到磁盘的情况下将 csv 格式的数据从内存发送到数据库?

MySQL查询来自2张表的困惑

sql - 如何从表中获取几个最高值?

php - 获取 HTML 表格以包含空日期的行

mysql - 如何查询mySQL 3表深度的结果?

php - sql选择当前和上个月的日期

php - MySQL如何将所有列加在一起,其中pid = X

sql - 几个同时请求的查询执行顺序

java - CentOS上的Spring Boot启动时间较长