我有一个有三列的表。
大约有一堆任务计划每15分钟运行一次。我需要知道第一个任务开始时和上一个任务结束时的区别。例如,见下文
NominalStartTime | startTime | endTime
____________________|_____________|____________
2012-09-19 08:15:00 | 08:15:41.27 | 08:15:47.00
2012-09-19 08:15:00 | 08:15:45.13 | 08:15:45.43
2012-09-19 08:15:00 | 08:15:49.88 | 08:15:50.13
2012-09-19 08:30:00 | 08:30:25.27 | 08:30:26.00
2012-09-19 08:30:00 | 08:30:45.13 | 08:30:45.43
2012-09-19 08:30:00 | 08:30:49.88 | 08:30:50.13
我正在寻找要返回的查询
NominalStartTime | startTime | endTime | difference
____________________|_____________|_____________|____________
2012-09-19 08:15:00 | 08:15:41.27 | 08:15:50.13 | 00:00:08.86
2012-09-19 08:30:00 | 08:30:25.27 | 08:30:50.13 | 00:00:24.86
我尝试了这个但是我通过错误等获得了聚合组
Select NominalStart, MIN(TimeStarted) as TimeStarted, MAX(TimeEnded) as TimeEnded, DATEDIFF(ms, TimeStarted, TimeEnded)
FROM taskRuns
GROUP BY NominalStart
ORDER BY NominalStart
答案 0 :(得分:2)
试试这个解决方案:
select NominalStart,min(TimeStarted),max(TimeEnded),
DATEDIFF(ms ,min(TimeStarted),max(TimeEnded)) as difference
from taskRuns
group by NominalStart
order by NominalStart
答案 1 :(得分:1)
您是否考虑过使用时间戳?
这将时间值存储为从1970年开始的秒数
操作时间和日期真的很容易,你可以简单地从另一个中减去一个。这真的取决于你使用什么操作数据,php与时间戳非常吻合。
如果我是你,我会把日期存储为时间戳......