2013-05-12 146 views
1

我有保存票據信息的表格,並且我想知道票證在特定池中停留了多長時間。我寫了下面的查詢:格式mysql TIMESTAMP AS x天,x小時,x分鐘,x秒

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 

它正常工作,現在我想除了獲得天數如下: 天:小時:分鐘:秒

任何機構可以幫助嗎?

回答

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 

Example at SQL Fiddle.

+0

嗨Andomar, 謝謝你的帖子,我還是想在天黯然失色時間:小時:分鐘:Sesconds。請記住,我節省時間戳格式的時間 謝謝 – Hassan 2013-05-12 12:03:16

+0

謝謝你的注意。該示例假定表列存儲時間戳(請參閱底部的SQL小提琴鏈接)。調整確切的時間格式應該很容易 - 我將其作爲練習。 – Andomar 2013-05-12 19:28:44