我使用的是mysql和Java。当iam在mysql中使用TIMEDIFF
执行查询以获取两次之间的差异时,它给出的结果为'40:23:12'
。但当我在java中使用该查询时,异常错误如下:
非法小时值"40">
SELECT TIMEDIFF(NOW(),last_act_time) FROM user_activity_log WHERE id=1;
有什么解决办法吗?
据我所知,这是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 所建议