SEC_TO_TIME()转换为java.sql.Time错误

时间:2010-04-09 12:46:52

标签: java mysql

我有一个聚合列显示微秒,报告(带jasper)必须显示HH:mm:此指标的ss

我所做的是使用SEC_TO_TIME(sum(col)/ 1000),但是当映射到java.sql.Time时,当结果中的小时值超过24时,我不起作用(例如:36:33: 33)

然后我认为另一种方式,不是使用sec_to_time,只是将微秒映射为Bigdecimal, 但不知道我使用什么java类来格式化日期作为hh的默认格式:mm:ss限制为24 ......?

3 个答案:

答案 0 :(得分:1)

java.sql.Time代表一个时间点。您试图表示持续时间,而不是某个时间点。因此,尝试将此“转换”为java.sql.Time在概念上是错误的,因此您会看到错误并不奇怪。

SEC_TO_TIME执行您需要的所有格式,对吧?因此,只需选择该表达式并将其从ResultSet检索为String

或者,如果您想用Java而不是SQL来表示和格式化持续时间,请使用Joda Time

答案 1 :(得分:0)

java.sql.Time的构造函数需要一些时间(以毫秒为单位)。那么为什么你不能将微秒结果乘以1000来制作毫秒并将其传递给它?获得java Date后,可以使用DateFormat格式化它。

答案 2 :(得分:0)

试试这个:

CONCAT('',TIMEDIFF(exp2,NOW()))