0

我在 mysql 中有一个表,其中包含如下数据:

id    from                  to
----  --------------------  ---------------------------
1     2013-01-31 23:50:00   2013-02-02 09:00:00
2     2013-02-05 11:21:12   2013-02-08 01:01:01
3     2013-02-08 17:33:44   2013-02-08 18:22:55
4     2013-02-12 01:40:12   2013-02-12 02:00:59
5     2013-02-28 01:40:12   2013-03-02 02:00:59

我需要一个 Mysql 查询或一个 php 代码来查找每行的 'from' 列和 'to' 列之间的差异,并分别找出 'from' 和 'to' 日期之间每天有多少秒,例如第 1 行所需的输出是这样的:

第 1 行 2013-01-31 23:50:00 - 2013-02-02 09:00:00 之间的差异

2013-01-31:600 秒(24:00:00 - 23:50:00 => 600 秒)

2013-02-01:86400 秒(24:00:00 - 00:00:00 => 86400 秒)

2013 年 2 月 2 日:32400 秒(09:00:00 - 00:00:00 => 32400 秒)

依此类推...对于每一行

MySQL 命令是首选。哪个代码可以创建这个输出?php 或 mysql 中是否有用于创建此输出的特定函数?

我读了这些答案: mysql计算每天两个日期/时间之间的秒数

MySQL:如何在几秒钟内获得两个时间戳之间的差异

但这些不是我的答案。

有关信息:链接 1 是一个类似于我的问题的问题,但答案不正确,因为“命令需要按天分组”但是如何?!第二个不是我的问题,而是第一个标记为与链接 2 重复的问题,这是不正确的。

4

1 回答 1

1

让我假设你有一个日期表。如果是这样,您可以使用join或相关的子查询:

select d.date,
       (select sum(timestampdiff(second,
                                 greatest(d.date, t.from),
                                 least(d.date, t.to)
                                ))
        from table t
        where t.to >= d.date and
              t.from < date_add(d.date, interval 1 day)
       ) as NumSeconds
from dates d;

如果您没有某种dates表格,您可以即时创建一个:

from (select date('2013-01-31') as date union all
      select date('2013-02-01') union all
      . . .
     ) dates
于 2015-08-17T10:47:31.453 回答