1

我有保存票信息的表,我想知道票在某个池中停留了多长时间。我写了以下查询:

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

它工作正常,现在我想获得以下天数:Days:Hours:Minutes:Seconds

任何机构都可以帮忙吗?

4

1 回答 1

0

您可以使用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

SQL Fiddle 的示例。

于 2013-05-12T11:52:00.023 回答