【问题标题】:Difference between startTime and endTime for groups of tasks任务组的 startTime 和 endTime 之间的差异
【发布时间】:2012-09-19 18:33:53
【问题描述】:

我有一个包含三列的表格。

  • 任务应该开始的时间 (nominalStartTime)
  • 开始时间 (startTime)
  • 结束时 (endTime)

大约有一堆任务计划每 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

【问题讨论】:

    标签: sql date group-by


    【解决方案1】:

    试试这个解决方案:

    select NominalStart,min(TimeStarted),max(TimeEnded),
           DATEDIFF(ms ,min(TimeStarted),max(TimeEnded)) as difference
    from taskRuns
    group by NominalStart
    order by NominalStart
    

    SQL Fiddle演示

    【讨论】:

    • 只返回一行。我不确定它到底在做什么才能编辑它
    • 你看到 sql fiddle 了吗?有两行。
    • 我做到了。我不确定为什么它在那里工作。我应该返回几千行。因为我提供的只是一小部分数据。和想法?
    • 什么是 RDBMS?我以为是 MS Sql Server。您的示例是针对一项任务的吗?可能的解决方案会显示您一项任务的开始时间和结束时间(我认为)。您是否在 taskRuns 中获得了有关任务的信息? TaskID 什么的?
    • 是ms sql server 2008r2。有 15 到 50 个任务被启动。但是它们的标称开始时间都是一样的。我的示例是两组标称开始时间,但我的完整数据集有数百个。编辑,我的示例只有 8:15 和 8:30,但是我在几周内都有 5 分钟和 15 分钟的所有增量
    【解决方案2】:

    您考虑过使用时间戳吗?

    这会将时间值存储为从 1970 年开始的秒数

    为了让操作时间和日期变得非常容易,您可以简单地从另一个中减去一个。这真的取决于您使用什么来操作数据,php 与时间戳配合得非常好。

    如果我是你,我会考虑将日期存储为时间戳...

    【讨论】:

    • 数据是由我无法控制的软件记录的。不幸的是,我必须在这些范围内操作
    猜你喜欢
    • 2018-11-02
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2011-01-28
    相关资源
    最近更新 更多