php - 行之间的时间差

标签 php mysql sql datetime time

我必须遵循下面的查询图1,它有效,但我想做的是获取第4行和第5行之间的时间差,然后获取第5行和第6行之间的差异.

目标是得到类似图2的东西。理想情况下,我想在查询中执行此操作,而不必循环遍历数据库中的每一行,然后返回 PHP。

提前致谢。

<小时/>

图1

select * from ModuleFlowModuleStatus where ModuleCode = "LW2205" ORDER BY UpdatedOn;


| ID  | Module | MoudleStatus            | UpdatedOn           |

|   4 | LW2205 | Draft exam received     | 2017-10-18 12:41:12 |

|   5 | LW2205 | Draft exam received     | 2017-10-18 12:41:23 |

|   7 | LW2205 | Draft exam received     | 2017-10-20 15:06:46 |

| 275 | LW2205 | Exam approved by Dean   | 2017-11-14 16:39:28 |

| 288 | LW2205 | Final exam sign off by  | 2017-11-21 12:28:59 |

| 295 | LW2205 | Exam sent to SREO (Stud | 2017-11-23 09:53:30 |

+-----+--------+-------------------------+---------------------+
<小时/>

2 预期结果

| ID  | Module | MoudleStatus            | UpdatedOn           | Diff(days)

|   4 | LW2205 | Draft exam received     | 2017-10-18 12:41:12 | 0

|   5 | LW2205 | Draft exam received     | 2017-10-18 12:41:23 | 0

|   7 | LW2205 | Draft exam received     | 2017-10-20 15:06:46 | 2

| 275 | LW2205 | Exam approved by Dean   | 2017-11-14 16:39:28 | 24

| 288 | LW2205 | Final exam sign off by  | 2017-11-21 12:28:59 | 7

| 295 | LW2205 | Exam sent to SREO (Stud | 2017-11-23 09:53:30 | 3

+-----+--------+-------------------------+---------------------+

最佳答案

此 SQL 代码应该适用于应用于图 1 中的表:

SELECT
  t1.ID,
  t1.Module,
  t1.MoudleStatus,
  t1.UpdatedOn,
  IFNULL(DATEDIFF(
    t1.UpdatedOn,
    (SELECT MAX(t2.UpdatedOn) FROM ModuleFlowModuleStatus AS t2 WHERE t2.id < t1.id)
  ), 0) AS `Diff(Days)`
FROM
  ModuleFlowModuleStatus AS t1;

代码可以稍微优化/改进,但它对我有用。我省略了 WHERE 和 ORDER BY 子句以简化我的代码,您只需再次添加它们即可。如果有帮助请告诉我。哦,MySQL DATEDIFF 函数默认返回以天为单位的值,我认为这正是您想要的。

关于php - 行之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48211142/

相关文章:

c# - 在使用 MySqlTransaction 方面需要帮助

c# - 将现有表映射到 C# 中的域类

mysql - 通过sql命令将相同的内容添加到表列

php - 如何使用一个sql查询创建多个表

php - 从 SQL 打印到 PHP?

php - 以base64格式对图像进行编码并存储在mysql数据库中,不适用于php和laravel的所有类型的图像

sql - SQL 中的大于和小于或等于

php - 如何设置下拉列表的样式?

php - 使用 php postgres 从表中选择特定列

mysql - 我无法在 Linux 上启动 MySQL - 错误 mysqld_safe