您可以在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