mysql - 在SQL中计算事件之间的时间范围

标签 mysql

我是一个菜鸟,正在尝试编写一个 Sql 来计算下表中不同开始日期之间的时间范围。

 ID         StartDate
202151080   3/27/2014 0:00
202151080   5/16/2014 0:00
202151080   10/27/2014 0:00

我的预期输出是

 ID         StartDate        interval
202151080   3/27/2014 0:00    0
202151080   5/16/2014 0:00    50
202151080   10/27/2014 0:00   164

我可以提出静态..如下所示..我正在努力计算与阅读表的差异。

SELECT id, datediff(dd,'2014-03-27 00:00:00','2014-05-16 00:00:00');

感谢您的宝贵时间。

最佳答案

您可以为此使用相关子查询:

SELECT ID, StartDate,
       COALESCE(DATEDIFF(StartDate, 
                        (SELECT StartDate
                         FROM mytable AS t2
                         WHERE t2.ID = t1.ID AND t2.StartDate < t1.StartDate
                         ORDER BY StartDate DESC LIMIT 1)), 0) AS `interval`
FROM mytable AS t1                             
ORDER BY StartDate

Demo here

关于mysql - 在SQL中计算事件之间的时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36186173/

相关文章:

php - MySQL 与 PHP 中的加密和散列

MySQL - 只返回过去 X 天的条目

mysql - 连接2个表的SQL查询

bash - 带参数的 MySQLdump

javascript - node.js 从 mysql 堆栈中选择数据

mysql - 合并 2 个表中的数据?

python - 如果我更改列名,MySQL 将不会创建表

mysql - 如何从所有组中获取总计最高的ID? (MySQL)

php - MySQL 和 PHP : auto connect to DB or to properly way to pass host/db to MySQL methods

sql - 在插入表字段后更改表字段的值