SQL Server - 计算 HH:MM:SS 格式的两个日期时间戳之间经过的时间

2023-12-29

我有一个包含“时间”列的 SQL Server 表。该表是一个日志表,其中包含状态消息和每条消息的时间戳。日志表通过批处理文件插入。有一个 ID 列将行分组在一起。每次运行批处理文件时,它都会初始化 ID 并写入记录。我需要做的是获取从 ID 集中的第一条记录到同一 ID 集的最后一条记录所经过的时间。我开始玩弄 select Max(Time) - Min(Time) from logTable where id = 但无法弄清楚如何正确格式化它。我需要 HH:MM:SS。


SQL Server 不支持 SQL 标准间隔数据类型。最好的办法是以秒为单位计算差异,并使用函数来格式化结果。本机函数 CONVERT() 可能看起来工作正常只要您的间隔时间少于 24 小时。但 CONVERT() 并不是一个好的解决方案。

create table test (
  id integer not null,
  ts datetime not null
  );

insert into test values (1, '2012-01-01 08:00');
insert into test values (1, '2012-01-01 09:00');
insert into test values (1, '2012-01-01 08:30');
insert into test values (2, '2012-01-01 08:30');
insert into test values (2, '2012-01-01 10:30');
insert into test values (2, '2012-01-01 09:00');
insert into test values (3, '2012-01-01 09:00');
insert into test values (3, '2012-01-02 12:00');

值的选择方式是:

  • id = 1,经过时间为1小时
  • id = 2,经过的时间是 2 小时,并且
  • id = 3,经过的时间是3小时。

此 SELECT 语句包括一列用于计算秒数,另一列使用 CONVERT() 进行减法。

select t.id,
       min(ts) start_time,
       max(ts) end_time,
       datediff(second, min(ts),max(ts)) elapsed_sec,
       convert(varchar, max(ts) - min(ts), 108) do_not_use
from test t
group by t.id;

ID  START_TIME                 END_TIME                   ELAPSED_SEC  DO_NOT_USE
1   January, 01 2012 08:00:00  January, 01 2012 09:00:00  3600         01:00:00
2   January, 01 2012 08:30:00  January, 01 2012 10:30:00  7200         02:00:00
3   January, 01 2012 09:00:00  January, 02 2012 12:00:00  97200        03:00:00

请注意 ID 号 3 上的 27 小时差异的误导性“03:00:00”。

SQL Server 中格式化经过时间的函数 https://stackoverflow.com/a/11191244/562459

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

SQL Server - 计算 HH:MM:SS 格式的两个日期时间戳之间经过的时间 的相关文章

  • 在 Tomcat 中处理夏令时,无需重新启动服务器

    我有一个在 Tomcat 上运行的 Java Web 应用程序 用于为客户端创建计划事件 我有一个关于底层操作系统 Tomcat 和 JVM 的默认日期时间的问题 当我检索Date通过Java代码它与底层操作系统类似 然后我更改了操作系统时
  • MS JSON 日期序列化和夏令时

    我们有一个托管在 ASP NET 应用程序中的 Ajax Web 服务 该服务接受 DateTime 参数 出于本问题的目的 该参数应接收与以下内容等效的 DateTime Date 1359727200000 0200 这是 2013 年
  • SQL Server 列的默认值

    当您使用列的默认值时SQL Server Management Studio表设计器 SSMS 更改您的默认值并在其周围添加括号 在所有版本和 SQL Server 的所有版本中 例如 如果您设置0作为默认值 此默认值更改为 0 我不知道为
  • 为什么我无法访问 PHP DateTime 类中的 DateTime->date?

    使用DateTime类 如果我尝试运行以下代码 mydate new DateTime echo mydate gt date 我会回复此错误消息 注意 未定义的属性 DateTime date 这没有意义 因为跑步时var dump 在变
  • 在 PostgreSQL 的表中添加缺失的日期

    我有一个表 其中包含 2002 年每一天的数据 但其中缺少一些日期 即 2002 年有 354 条记录 而不是 365 条 对于我的计算 我需要在表中包含空值的缺失数据 ID rainfall date 100 110 2 2002 05
  • 使用日期时间作为文件名并随后解析文件名?

    我正在将文件写入硬盘 文件名是这样构建的 String Format 0 yyyy MM dd hh mm ss txt DateTime Now 例如 文件名是 2010 09 20 09 47 04 txt 现在我想在下拉列表中显示这些
  • 如何将Excel文件导入到sql server 2008

    如何在不使用导入向导的情况下使用 sql 查询将 excel 文件导入到 sqlserver2008 Express Edition 中的新表中 谢谢 普拉迪 有一篇微软知识库文章列出了所有可能的方法 http support micros
  • 如何检查 DST(夏令时)是否有效,如果有效,则偏移量?

    这是我需要的 JS 代码 var secDiff Math abs Math round utc date this premiere date 1000 this years this calculateUnit secDiff 8640
  • 变更数据捕获性能损失是否仅限于启用 CDC 的表?

    我读到启用更改数据捕获显然会对数据库性能产生影响 这种性能损失是否仅影响启用了 CDC 的表 还是会影响数据库中的所有操作 在我的情况下 我使用 SSIS 并且有大量数据移入和移出临时数据库 我的系统中还有一些用于转换的查找表 我希望使用
  • 将unix时间转换为字符串的Powershell函数?

    我正在尝试使用 ADO NET 和 PowerShell 读取 Firefox place sqlite datedase 的日期字段 显然这些字段是 Unix 时间的 我正在寻找 Net 日期时间或字符串的转换 Edit 我想将数据行绑定
  • 如何在当前时间添加时间

    我对这个问题很困惑 我想抓取当前时间 而不是根据条件 我想将所需的时间添加到当前时间 例如 current time 06 47 10 or should i hv to change this format to 2011 03 26 0
  • Django 似乎以 UTC 格式显示日期时间

    In settings py I have TIME ZONE Asia Singapore USE I18N True USE L10N True USE TZ True 如果用户 居住在新加坡 输入2013 10 07 01 00 A
  • python 格式日期时间,带有“st”、“nd”、“rd”、“th”(英文序数后缀),如 PHP 的“S”

    我想要一个 python datetime 对象来输出 并在 django 中使用结果 如下所示 Thu the 2nd at 4 30 但我在python中找不到输出的方法st nd rd or th就像我可以使用 PHP 日期时间格式一
  • 无法附加数据库或创建新数据库 - SQL Server 2008 [重复]

    这个问题在这里已经有答案了 可能的重复 SQL Server 2008 Express 无法附加 mdf 文件 https stackoverflow com questions 1424811 sql server 2008 expres
  • 如何在Python中测量时间?

    我想启动我的程序 测量程序启动的时间 然后等待几秒钟 按下按钮 K RIGHT 并测量按下按钮的时间 我正在使用 Pygame 来注册 Keydown 但在我下面的代码中它没有注册我的 Keydown 我在这里做错了什么 start tim
  • Linq 选择行,其中日期在当月

    我需要获取当月的数据 一直无法找到有效的解决方案 这是我的代码 它为我提供了所需的数据 但我获取的是整整一个月前的数据 而不是当前月份的数据 我选择了两次日期 限制 row gt DateTime Today Addmonths 1 有任何
  • java.time DateTimeFormatter 解析具有灵活的后备值

    我正在尝试将一些代码从 joda 时间移植到 java 时间 JodaTime 可以像这样指定年份的后备值 parser withDefaultYear new DateTime DateTimeZone UTC getYear parse
  • SQL Server freetexttable 部分单词

    我第一次使用 SQL 自由文本搜索 我有点困惑为什么它会这样 我有一个联系人表 用户可以搜索并且我正在使用 SELECT Contacts Rank FROM FREETEXTTABLE Contacts O Roarty AS Conta
  • 在 x 轴上操作日期 Pandas Matplotlib

    我有一组非常简单的数据 如下所示 我正在寻找一种方法来绘制此堆积条形图并格式化 x 轴 日期 使其从 1996 年 31 月 12 日开始 到 2016 年 31 月 12 日结束 增量为 365 天 我编写的代码绘制了每个日期 因此 x
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech

随机推荐