我必须按照下面的查询图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
+-----+--------+-------------------------+---------------------+
2条答案
按热度按时间bjg7j2ky1#
此sql代码适用于应用于图1中的表:
代码可以优化/改进一点,但对我来说很有用。为了简化代码,我省略了where和order by子句,您只需再次添加它们。如果有用请告诉我。哦,mysql datediff函数默认返回以天为单位的值,我认为这正是您想要的。
fcipmucu2#
另一种方法是分配行号并联接
结果
请注意,结果与预期结果不同