计算查询中活动时间戳之间的时间差

2024-04-02

我对 Access 相当陌生,无法解决(我希望)一个简单的问题 - 我想我可能是通过 Excel 护目镜来查看它。

我有一个名为importedData我每天(并不奇怪)导入一个日志文件。该日志文件来自某些采矿设备上的简单数据记录应用程序,本质上它保存了timestamp and status当前活动更改为新活动的点。

数据示例如下所示:

然后使用查询过滤此信息以定义我想要查看信息的范围,例如从 29/11/2013 06:00:00 AM 到 29/11/2013 06:00:00 PM

现在的目的是采取status条目的timestamp并获取它与查询结果的后续行记录之间的时间差。由于设备轮班工作 12 小时,因此我应该能够了解设备在轮班期间执行每项活动所花费的时间。

在上面的示例中,设备在 00:01:00 处于“START_SHIFT”状态,在 06:08:26 处于“DELAY_WAIT_PIT”状态,依此类推。然后,我将构建所选期间的状态条目的唯一列表,并对每个状态的总时间进行求和以获得轮班摘要。


您可以使用相关子查询来获取下一个timestamp对于每一行。

SELECT
    i.status,
    i.timestamp,
    (
        SELECT Min([timestamp])
        FROM importedData
        WHERE [timestamp] > i.timestamp
    ) AS next_timestamp
FROM importedData AS i
WHERE i.timestamp BETWEEN #2013-11-29 06:00:00#
    AND #2013-11-29 18:00:00#;

然后,您可以将该查询用作另一个查询中的子查询,在其中计算之间的持续时间timestamp and next_timestamp。然后在第三个查询中使用整个新查询作为子查询GROUP BY status并计算每个状态的总持续时间。

这是我在 Access 2007 中测试的版本...

SELECT
    sub2.status,
    Format(Sum(Nz(sub2.duration,0)), 'hh:nn:ss') AS SumOfduration
FROM
    (
        SELECT
            sub1.status,
            (sub1.next_timestamp - sub1.timestamp) AS duration
        FROM
            (
                SELECT
                    i.status,
                    i.timestamp,
                    (
                        SELECT Min([timestamp])
                        FROM importedData
                        WHERE [timestamp] > i.timestamp
                    ) AS next_timestamp
                FROM importedData AS i
                WHERE i.timestamp BETWEEN #2013-11-29 06:00:00#
                    AND #2013-11-29 18:00:00#
            ) AS sub1
    )  AS sub2
GROUP BY sub2.status;

如果遇到麻烦或需要修改它,请分解最里面的子查询,sub1,并自行测试。然后做同样的事情sub2。我怀疑你会想要改变WHERE子句使用参数而不是硬编码时间。

注意查询Format如果您的持续时间超过 24 小时,则表达式将不合适。这是一个即时窗口会话,它说明了问题......

' duration greater than one day:
? #2013-11-30 02:00# - #2013-11-29 01:00#
 1.04166666667152 
' this Format() makes the 25 hr. duration appear as 1 hr.:
? Format(#2013-11-30 02:00# - #2013-11-29 01:00#, "hh:nn:ss")
01:00:00

但是,如果您只处理 12 小时的数据。转变,这应该不是问题。请记住这一点,以防您需要分析跨度超过 24 小时的数据。

如果子查询不熟悉,请参阅 Allen Browne 的页面:子查询基础知识 http://allenbrowne.com/subquery-01.html。他在标题为“相关子查询”的部分中讨论了相关子查询获取另一条记录中的值.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算查询中活动时间戳之间的时间差 的相关文章

随机推荐

  • 使用 sha256 与用户 ID 进行哈希和加盐

    我将在我的网站上使用 sha256 以保护我的用户密码 并且作为盐 我正在考虑使用用户 ID int auto increment 这将是独特的 但不是很长和困难 并且公开 user php id 1 但它是否唯一很重要 对吧 hash s
  • 在 zf2 mvc 之外使用 Zend_Db zf2 模块

    我正在编写一个不基于 zf2 mvc 的 PHP 应用程序 我确实只想使用 Zend Db zf2 模块 我如何配置我的应用程序以了解 如何在需要的地方找到 Zend Db 相关的 PHP 文件 我使用 phyrus 下载了 zf2 Zen
  • 在 Swift 中创建线性重力场

    Swift 中似乎已弃用矢量方法的线性重力场 这种新语言中有一堆新的 SKFieldNode 但我似乎找不到一个类似于线性重力的 属性 direction 在 Swift 中甚至不可用 也许可以使用这个通用方法 customFieldWit
  • VBA 在 Excel 单元格填充时即时将字母转换为大写

    我正在寻找一个宏自动地发生事件时被激活 如果有人插入文本值或带有文本的值cell A1 一旦他按下输入并且单元格已填充if某处有一个小写它将转换为字母大写 然而 问题是它必须是自动的 而不必自己启动宏 在工作表代码区域中输入以下事件宏 Pr
  • Chrome 扩展程序更改 popup.html 文本

    我是一个完全的新手 我想从 p 标签中获取文本并将其放入另一个 p 标签中 这样当我单击我的扩展程序时 我会看到显示的两个文本 我做错了什么 以及我以后如何避免类似的错误 弹出 html p this is the text to be r
  • 以编程方式查找和替换 pdf 中的文本

    我正在尝试创建一个 Web 脚本 该脚本允许我更改已上传的 PDF 模板并重新输出它们 我已经尝试过 Zend 它允许我写入 PDF 但这意味着在某些空间中将 PDF 留空 这对于我的需要来说太原始 了 PDFFlip 也好不到哪去 我们需
  • 在 Windows 上链接 gRPC for Visual C++

    我正在尝试在 Visual C 项目中使用 gRPC 到目前为止我有 1 构建gRPC with vcpkg vcpkg install grpc x64 windows2 综合vcpgk带有视觉工作室的库 vcpkg integrate
  • 获取 lift 中的复选框和单选按钮值

    我正在尝试处理电梯框架中的表格 我的表单有一个复选框和单选按钮 我如何检查复选框是否被选中以及所选的单选按钮 我使用以下代码来获取其他元素值 风景
  • 像数组一样访问 json 对象中的元素[重复]

    这个问题在这里已经有答案了 可能的重复 我有一个嵌套数据结构 JSON 如何访问特定值 https stackoverflow com questions 11922383 i have a nested data structure js
  • 我的 Facebook 应用程序如何将消息发布到墙上?

    我已经知道如何代表 Facebook 用户使用图形 API 将某些内容发布到墙上 但现在我想以我的应用程序的名义发布一些内容 我正在尝试这样做 protected void btn submit Click object sender Ev
  • QWidget setGeometry 在不使用 QLayout 的情况下显示

    目标是在另一个 QWidget 中绘制一个 QWidget 子类 只给出坐标 include
  • 如何在命令行中执行 Julia 代码?

    我最近在 Julia 中转移了我的代码 我想知道如何在命令行中执行 Julia 代码 我知道 Julia 代码可以通过运行一次来 编译 但问题是我需要对集 群上的模拟模型进行参数扫描 我只能使用命令行 而不能使用 REPL 在集群上运行模拟
  • Twig 设置在下拉菜单中选择选项

    我目前正在从头开始编写 php mvc 并使用 twig 作为我的模板引擎 并且需要一些帮助来设置下拉列表中的选定选项 目前 在我的模型中 我有一个 sql 查询 它可以提取所有主管列表 并使用 twig for 循环将它们放入我的下拉列表
  • 通道适配器和消息网关模式有什么区别?

    无论我读了多少关于这两种模式的文章 我都看不出其中的区别 这是一个很好的问题 因为它们的相似之处在于它们都提供对消息系统的应用程序访问 我认为正是他们实现这一目标的方式使他们与众不同 通道适配器模式涉及如何从现有系统获取数据而不修改该系统
  • 在 Play 2.0 视图中转义 JavaScript 字符串?

    有没有一种简单的方法可以转义字符串以用作 Play 2 0 视图中的 JavaScript 字符串 例如 下面是一个简单的视图 它在 onclick 中创建带有确认框的链接 text String link Call message Str
  • 指数位数

    是否可以设置用于打印浮点数指数的位数 我想将其设置为3 现在 f 0 0000870927939438012 gt gt gt 14e f 8 70927939438012e 05 gt gt gt 0 14e f 8 709279e 00
  • 页面刷新而不是 Ajax Load 无需

    在表单提交时 我想加载一个带有 mysql 表的更新列表的 div 我将表单变量发送到 php 并将它们发布到 mysql 表中 同一页面显示完整的表数据 我想将数据加载到与表单相同的 div 标签中 因此 信息似乎正在表单上方加载 我的
  • 类型 '' 不能用作泛型类型或方法 '' 中的类型参数 'T'。没有从 '' 到 '' 的隐式引用转换

    我从数据库生成了 Linq 到实体模型并对其进行了修改 我制作了接口 public interface IValid byte Valid get set 并使一些生成的类继承该接口 我编写了通用类来访问数据库中的表 public List
  • 在绘图中向堆积条形图添加计数百分比

    Given the following chart created in plotly 我想添加每个块内 M 和 F 类别的每个计数的百分比值 用于生成该图的代码 arr np array Dog M Dog M Dog F Dog F C
  • 计算查询中活动时间戳之间的时间差

    我对 Access 相当陌生 无法解决 我希望 一个简单的问题 我想我可能是通过 Excel 护目镜来查看它 我有一个名为importedData我每天 并不奇怪 导入一个日志文件 该日志文件来自某些采矿设备上的简单数据记录应用程序 本质上