我有一个保存票证信息的表,我想知道票证在某个池中停留了多长时间。我写了以下查询:
SELECT FROM_UNIXTIME((MAX(T.transfareDate)-MAX(TMAX.transfareDate)),'%k hours, %i minutes, %s seconds') AS 'Time to repair'
FROM aims_item_group_transfare T
LEFT JOIN aims_item_group_transfare TMAX ON T.item_id = TMAX.item_id AND TMAX.toGroupId=20
WHERE T.fromGroupId =20
它工作正常,现在我还希望获得以下天数:
天数:小时数:分钟数:秒
任何人都可以帮忙吗?
最佳答案
您可以使用period_diff
计算月份差异。请注意,该函数需要"YYYYMM"
字符串格式的参数,而不是日期。
select concat(
period_diff(
date_format(DateDiff, '%Y%m')
, '197001') -- 1970-01 = Start of UnixTime
, ' months '
, date_format(
DateDiff,
'%k hours, %i minutes, %s seconds')
) as TimeToRepair
from (
select from_unixtime(
max(T.transfareDate) - max(TMAX.transfareDate)
) as DateDiff
from aims_item_group_transfare T
left join
aims_item_group_transfare TMAX
on T.item_id = TMAX.item_id
and TMAX.toGroupId = 20
group by
T.item_id
) as SubQueryAlias
Example at SQL Fiddle.