如何获取当前时间和eventTime之间的时间差

问题描述:

我正在使用php。我有一个桌子事件。其中有三个字段,EventID,EventName和EventTime。如何获取当前时间和eventTime之间的时间差

我已经使用日期时间格式为EVENTTIME字段。

现在我想写一个查询返回当前时间和事件之间的时间差异。

我希望自己的打印结果如下: - eventID发生1小时20分钟前

请给我建议我该怎么做。

预先感谢您。

尝试这一个 -

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

我这样做完全是这样的: -

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;