在mysql中使用TIMEDIFF两次获得差异时非法小时值错误

时间:2016-08-08 07:04:10

标签: java mysql

我正在使用mysql和Java。当我在mysql中使用TIMEDIFF执行查询以获得两次差异时,它会将结果显示为'40:23:12'。但是当我在java中使用该查询时,异常错误如下:

  

非法小时值' 40'

SELECT TIMEDIFF(NOW(),last_act_time) FROM user_activity_log WHERE id=1;

有没有解决方案?

1 个答案:

答案 0 :(得分:0)

根据我的理解,这是MySql版本5.1.6中的错误。

参考:https://bugs.mysql.com/bug.php?id=36051

要解决此问题,应在执行查询期间将结果转换为字符串。这可以通过以下方式实现。

SELECT concat('',TIMEDIFF(NOW(),last_act_time)) FROM user_activity_log WHERE id=1;

concat将使其成为字符串,以便您可以将其作为字符串处理。

SELECT CAST(TIMEDIFF(NOW(),last_act_time) AS CHAR) FROM user_activity_log WHERE id=1;

根据@eggyal

的建议