您可以在HQL中做到这一点。因此,您目前正在执行“executeQuery”,也就是HQL查询。
First point你可以在HQL中运行特定的mysql命令,默认情况下会给你两个日期之间的区别,所以不需要额外的工作来使用timeCategory或者任何额外的与db结果混淆。
MySQL的:
FROM_UNIXTIME(UNIX_TIMESTAMP(coalesce(rq.finished,rq.start)) - UNIX_TIMESTAMP(rq.start))
这一操作将失败,而你在内部数据库 测试你的查询,以便instead:
CONVERT(concat(hour(rq.finished)*60*60+minute(rq.finished)*60+second(rq.finished)) ,INTEGER) -
CONVERT(concat(hour(rq.start)*60*60+minute(rq.start)*60+second(rq.start)) ,INTEGER)
as internalDuration,
更改rq.finished and rq.start
你的日期字段managementDate, appointmentDate
如果你想
生产days hours months之前等:
results=results?.each { instance ->
TimeDuration duration=getDifference(instance?.startDate,instance?.finishDate)
instance.duration=formatDuration(duration)
其中采用getDifference
private TimeDuration getDifference(Date startDate,Date endDate) {
if (startDate && endDate) {
//return TimeCategory.minus(endDate, startDate)
TimeDuration customPeriod = use(TimeCategory) {
customDuration(endDate - startDate)
}
return customPeriod
}
}
TimeDuration customDuration(TimeDuration tc) {
new TimeDuration( tc.days , tc.hours, tc.minutes, tc.seconds, ((tc.seconds > 0||tc.minutes > 0||tc.hours > 0) ? 0 : tc.millis))
}
我不跟着你,请你解释一下多一点? –
我只需要通过advisorI获取数据本colum可以有多个行,其值在这些值之内我需要计算两者之间的天数,例如我给出的 – Melany
示例给出了一个标记,因为它可能是您的英语,不了解。看着你的问题,我清楚地明白你在做什么。无论如何,在下面的回答中,如果您遵循代码库中的'internalDuration',您将看到它正被用来对列进行排序。因此根据该值知道哪些是第一个最后完美。可能不是人类可读的。相反,您可以看到重新返回的结果,并给出一个新的字段实例 - >然后附加一个新的'instance.duration'。 – Vahid