【问题标题】:SQL(?): Counting the time between two datetime valuesSQL(?):计算两个日期时间值之间的时间
【发布时间】:2010-09-17 01:37:58
【问题描述】:

当我只需要计算 08:00:00-16:00:00 之间的时间时,计算从 MySQL 获取的两个日期时间值之间的时间的最佳方法是什么。

例如,如果我的值为 2008-10-13 18:00:00 和 2008-10-14 10:00:00,则时差应为 02:00:00。

我可以用 SQL 来做吗?或者最好的方法是什么?我正在建立一个网站并使用 PHP。

感谢您的回答。

编辑:确切地说,我正在尝试计算“票”在工作时间内处于特定状态的时间。时间可能是几周。

EDIT2:计算实际时差我没有问题,但减去每天 00:00:00-08:00:00 和 16:00:00-00:00:00 的关闭时间。

-萨穆里

【问题讨论】:

    标签: sql mysql datediff


    【解决方案1】:

    TIMEDIFF 函数

    TIMEDIFF() 返回 expr1 – expr2 表示为时间值。 expr1 和 expr2 是时间或日期和时间 表达式,但两者都必须是 同类型。

    mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
        ->                 '2000:01:01 00:00:00.000001');
            -> '-00:00:00.000001'
    mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
        ->                 '2008-12-30 01:01:01.000002');
            -> '46:58:57.999999'
    

    【讨论】:

      【解决方案2】:

      您可能想在 PHP 中尝试它,但我认为它在 DB 中会更快

      code to return difference in an array

      【讨论】:

        【解决方案3】:

        我认为您应该在自己的代码中计算差异,而不是使用更复杂的 SQL 语句,因为:

        • 该计算似乎是您业务逻辑的一部分。如果您将其与您的其他业务代码集成,它似乎更易于维护。
        • 数据库通常是瓶颈,因此不要加载超出需要的负载。

        【讨论】:

          猜你喜欢
          • 2012-03-15
          • 2012-01-31
          • 2021-10-09
          • 2013-12-06
          • 2012-02-13
          • 2021-11-25
          • 2011-08-01
          • 1970-01-01
          相关资源
          最近更新 更多