【问题标题】:mysql calculate seconds between two date/times for each day [duplicate]mysql计算每天两个日期/时间之间的秒数[重复]
【发布时间】:2013-02-15 21:59:27
【问题描述】:

我有这张表,但我无能为力如何从这张表中计算每一天的秒数:

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

现在我需要在 2 月的 from 和 to 之间增加每一天的秒数。 所以对于 2 月 1 日 - x 秒、2 月 2 日 - y 秒、2 月 3 日 - 0 秒等。知道我该怎么做吗?非常感谢。

【问题讨论】:

  • @dom:OP 想要按天分组的结果。
  • 要让 SQL 查询返回您想要的结果,您必须将表与包含您希望获得结果的日期的列连接起来。 MySQL 本身不提供任何方法来生成给定时间间隔内的所有日期(甚至整数),因此您必须在应用程序层中实现这样的表,或者在 MySQL 中存储一个程序来生成这样的临时表。如果执行后者,您还可以在 MySQL 中存储一个程序,以更直接地构建您想要的结果集。这一切都表明 MySQL 可能不是解决这个问题的最佳工具。
  • 为每个 fromDate 提供部分数量的细微变化:选择 fromDate, sum(seconds) from (SELECT id, TIMESTAMPDIFF(SECOND, from, to) as seconds, date(from ) as fromDate from t1 ) t2 group by fromDate; rextester.com/QEPL38222

标签: mysql


【解决方案1】:

在 MySQL 中使用TIMESTAMPDIFF

SELECT TIMESTAMPDIFF(SECOND,from,to); 

例子:

SELECT TIMESTAMPDIFF(SECOND,'2016-01-01 00:00:00','2016-01-11 00:00:00'); -- 864000
SELECT TIMESTAMPDIFF(MINUTE,'2016-01-01 00:00:00','2016-01-11 00:00:00'); -- 14400
SELECT TIMESTAMPDIFF(HOUR,'2016-01-01 00:00:00','2016-01-11 00:00:00'); -- 240
SELECT TIMESTAMPDIFF(DAY,'2016-01-01 00:00:00','2016-01-11 00:00:00'); -- 10

【讨论】:

  • OP 想要按天分组的结果。
猜你喜欢
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2019-02-10
  • 2021-07-08
相关资源
最近更新 更多