我在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代码来查找'来自'专栏和'到'每行的列,并查找'之间每天有多少秒。和'到'日期分开,例如对于第1行,所需的输出是这样的:
2013-01-31 23:50:00 - 2013-02-02 09:00:00第1行的区别
2013-01-31:600 sec(24:00:00 - 23:50:00 => 600 sec)
2013-02-01:86400 sec(24:00:00 - 00:00:00 => 86400 sec)
2013-02-02:32400 sec(09:00:00 - 00:00:00 => 32400 sec)
依此类推......每一行
首选MySQL命令。哪些代码可以创建此输出?在php或mysql中是否有任何特定的功能来创建这个输出?
我读了这些答案: mysql calculate seconds between two date/times for each day
MySQL: how to get the difference between two timestamps in seconds
但这些不是我的答案。
获取信息: 链接1是一个像我的问题的问题,但答案是不正确的,因为"命令需要按天分组"但是怎么样?! 第二个不是我的问题,但问题一是标记为与链接2重复,但事实并非如此。
答案 0 :(得分: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