2011-11-24 207 views
0

我正在使用php。我有一個桌子事件。其中有三個字段,EventID,EventName和EventTime。如何獲取當前時間和eventTime之間的時間差

我已經使用日期時間格式爲EVENTTIME字段。

現在我想寫一個查詢返回當前時間和事件之間的時間差異。

我希望自己的打印結果如下: - eventID發生1小時20分鐘前

請給我建議我該怎麼做。

預先感謝您。

回答

4

嘗試這一個 -

SELECT EventID, TIME_FORMAT(TIMEDIFF(NOW(), EventTime), 'occured %H hour %i minutes ago') diff FROM table; 

SELECT EventID, CONCAT('occured ', hours, IF(hours > 1, ' hours ', ' hour '), minutes, IF(minutes > 1, ' minutes', ' minute'), ' ago') FROM (
    SELECT EventID, 
    @diff:=TIMEDIFF(NOW(), EventTime), 
    EXTRACT(HOUR FROM @diff) hours, 
    EXTRACT(MINUTE FROM @diff) minutes 
    FROM EVENT) t; 
+0

這可能是最好的方式,如果你想這樣做純粹的MySQL ,就我所能看到的唯一缺點是它會返回例如「00小時和19分鐘前」或「07小時和01分鐘前」。 – zrvan

+0

謝謝先生......請告訴我,如果我只想顯示「19分鐘前」如果小時小於1,我該怎麼辦?如果小時是1或多於1,那麼這應該顯示小時和分鐘...... –

+0

@zrvan你說得對。在這種情況下,我們應該手動檢查這些值並格式化數值。 – Devart

0

我這樣做完全是這樣的: -

SELECT 
    placeID, 
    IF(TIMEDIFF(NOW(), comment_datetime) > '01:00:00', 
    TIME_FORMAT(TIMEDIFF(NOW(), comment_datetime), 'occured %H hour %i minutes ago'), 
    TIME_FORMAT(TIMEDIFF(NOW(), comment_datetime), '%i minutes ago') 
) diff 
FROM 
    place_comments; 
相關問題