在MySql中查找两个日期之间的秒差

时间:2011-12-03 23:30:22

标签: mysql

我想知道从表字段upload_date到现在,执行查询时经过了多少时间。在阅读了MySQL的一些功能后,我尝试了但并不是那么幸运。

如果小于24小时,有没有办法以小时为单位返回值,如果是100天或更短,是否以天为单位返回?否则我将不得不在PHP中编写代码。

日期为CURRENT TIME STAMP格式,只是为了清除它。

我试过了:

SELECT DATE_SUB(NOW(), upload_date) FROM is_meeting_files

我也试过这个,但它给出了0秒的差异:

SELECT DATEDIFF(CURDATE(), upload_date) AS intval FROM is_meeting_files LIMIT 0,5;

2 个答案:

答案 0 :(得分:4)

您可以相互减去unix时间戳值:

SELECT unix_timestamp(NOW()) - unix_timestamp(upload_date) from is_meeting_files;

答案 1 :(得分:1)

你可以这样做:

SELECT
    IF (TIMESTAMPDIFF(HOUR, upload_date, NOW()) <= 24,
        CONCAT(TIMESTAMPDIFF(HOUR, upload_date, NOW()), ' hours'),
        IF (TIMESTAMPDIFF(DAY, upload_date, NOW()) <= 100,
            CONCAT(TIMESTAMPDIFF(DAY, upload_date, NOW()), ' days'),
            CONCAT(TIMESTAMPDIFF(MONTH, upload_date, NOW()), ' months'),
        )
    ) as diff
FROM is_meeting_files;

当差异小于24小时时,这将返回“n小时”;如果差异小于100天,则返回“n天”;当差异超过100天时,返回“n个月”。

从我的观点来看,在SQL中执行所有这些操作是一个坏主意,因为这种查询无法缓存,因为您认为它不是那么灵活。所以,我建议你在PHP端生成这个。