我有一个聚合列显示微秒,报告(带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 ......?
答案 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()))