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

それは正常に動作します。次のようにさらに日数を取得したいと思います:日:時間:分:秒

どんな体でも助けてくれますか?

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 に答える