首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate :通用JDBC异常-时间'838:59:59‘的格式不正确

Hibernate :通用JDBC异常-时间'838:59:59‘的格式不正确
EN

Stack Overflow用户
提问于 2013-03-12 19:11:44
回答 3查看 1.2K关注 0票数 5

我有如下hibernate映射:

代码语言:javascript
运行
复制
<property formula="(Timediff(ifnull(sttime,now()),sstime))" insert="false" name="duration" update="false" />
where sstime is of type Timestamp

在这里,这个公式从我的数据中返回一些格式为"838:59:59“的值。

当我试图在'Duration‘字段中加载这个值时,我得到了异常,它有'java.sql.Time’类型,它给了我这个异常。

代码语言:javascript
运行
复制
"Generic JDBC exception - Bad format for Time '838:59:59'"
EN

回答 3

Stack Overflow用户

发布于 2013-03-12 19:31:43

这确实不是一个有效的时间。您不应该使用java.sql.Time来表示持续时间,特别是当此持续时间可能超过24小时时,因为时间表示日期的时间部分。请改用自定义类型,或仅使用您将自己解析的字符串。

票数 3
EN

Stack Overflow用户

发布于 2013-03-12 19:32:05

从源头开始

http://www.microshell.com/database/mysql/getting-around-mysql-timediff-maximum-value-of-8385959/

在公式中使用TIMESTAMPDIFF代替TIMEDIFF

票数 1
EN

Stack Overflow用户

发布于 2013-03-12 19:45:19

遵循MySQL文档,您应该使用TIMESTAMPDIFF()和UNIX_TIMESTAMP():

由TIMEDIFF()返回的结果被限制在时间值允许的范围内。或者,您可以使用函数TIMESTAMPDIFF()和UNIX_TIMESTAMP(),这两个函数都返回整数。

查询可能如下所示,但依赖于您正在使用的结果数据类型:

代码语言:javascript
运行
复制
SELECT FROM_UNIXTIME(TIMESTAMPDIFF(SECOND,sstime,NOW())) FROM time_table;

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(sstime)) FROM time_table;

Demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15359595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档