首页 > 解决方案 > SQL。将 datediff 小时数转换为 dd.hh:mm:ss

问题描述

我有一些代码可以在表中最旧的记录之间生成小时数(MIN)getdate()并且正在使用

CONVERT(CHAR(8),DATEADD(SECOND,DATEDIFF(SECOND,MIN(OLDESTRECORD),GETDATE()),0),108) 

得到HH:MM:SS,但是当时间超过 24 小时时,它只显示小时部分。即 30 小时差异显示为 6 小时......我如何让它显示dd.hh:mm:ssie 1.06:00:00

标签: sqlsql-server

解决方案


注意在结束日期未达到开始日期的“时间”的情况

 select cast(DATEDIFF(SECOND,MIN(OLDESTRECORD),GETDATE()) /  86400  as varchar(4)) + '.' +  CONVERT(CHAR(8),DATEADD(SECOND,DATEDIFF(SECOND,MIN(OLDESTRECORD),GETDATE()) % 86400 ,0),108) 

推荐阅读