【问题标题】:Finding the seconds difference between two dates in MySql在 MySql 中查找两个日期之间的秒差
【发布时间】:2011-12-03 23:30:22
【问题描述】:

我想知道从表字段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;

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你可以这样做:

      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;
      

      当 diff 小于 24 小时时,这将返回“n hours”,如果 diff 小于 100 天,则返回“n days”,如果 diff 超过 100 天,则返回“n months”。

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

      【讨论】:

      • 我是通过 php 完成的,但感谢您的帖子。我将尝试在我的 sql 查询中执行此操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 2016-11-30
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多