Sql [datetime2](7)的DateDiff,单位为hh:mm;ss格式

Sql [datetime2](7)的DateDiff,单位为hh:mm;ss格式,sql,sql-server,Sql,Sql Server,下面是根据预期结果修改的查询 CREATE TABLE dbo.Duration (startDate datetime2, endDate datetime2); INSERT INTO dbo.Duration (startDate, endDate) VALUES ('2007-05-06 16:42:09', '2007-05-07 11:10:08'); INSERT INTO dbo.Duration (startDate, endDate) VALUES ('20

下面是根据预期结果修改的查询

CREATE TABLE dbo.Duration     (startDate datetime2, endDate datetime2);

INSERT INTO dbo.Duration (startDate, endDate)  VALUES ('2007-05-06 16:42:09', '2007-05-07 11:10:08');  
INSERT INTO dbo.Duration (startDate, endDate)  VALUES ('2007-05-07 08:30:09', '2007-05-07 12:12:43');  
INSERT INTO dbo.Duration (startDate, endDate)  VALUES ('2007-05-07 11:35:09', '2007-05-07 17:13:39');  
预期结果:

SELECT   DATEDIFF(day, startDate, endDate) AS Duration      FROM dbo.Duration;  
19:32:01 04:18:34 06:22:29
您可以尝试以下查询

19:32:01 04:18:34 06:22:29 试试下面这样

SELECT CONVERT(VARCHAR(12), DATEADD(MS, DATEDIFF(MS,startDate, endDate), 0), 108) AS TimeDiff from Duration


如果差异超过24小时或100小时,您希望看到什么?如果日期差异超过24小时,您希望它显示为
25:32:12
1d 01:32:12
?顺便说一句,持续时间应该是一个数字而不是一个时间,本文(在“使用时间存储持续时间”一节中)讨论了这个特定主题,您如何获得这些值?例如,日期
2007-05-06 16:42:09
2007-05-07 11:10:08
之间的时差为18小时27分59秒。如何获得我给出的仅用于显示格式的值。这不是为了计算。然后向我们展示你的数据的预期结果,而不是一些样本数据,然后是一些与你的问题无关的随机数据@GarethD Thank Edited要将结果保存到表中,我必须创建什么样的数据类型要将结果保存到表中,我必须创建什么样的数据类型您可以使用TIME或使用VARCHAR.CONVERT(VARCHAR(12),DATEADD(MS,DATEDIFF(MS,Stat_EndTime,Stat_StartTime),0),108)作为[VisitTime],CONVERT(VARCHAR(12),DATEADD(MS,DATEDIFF)(MS,Load_EndTime,Load_StartTime),0),108)作为上面的[LoadTime]是可以的。当我为完全不同的时间进行下面的连接时,我得到了错误转换(VARCHAR(12),DATEADD(MS,DATEDIFF(MS,stational_EndTime,stational_StartTime),0),108)-转换(VARCHAR(12),DATEADD(MS,DATEDIFF(MS,loadingedtime,LoadingStartTime),0),108)作为[实际联系时间],--数据类型varchar和varchar在减法运算符中不兼容。-您不能在上述查询中使用减法运算符。您可以输入清除数据和预期结果吗。
with cte as
(
select    DATEDIFF(second, startDate, endDate) AS Duration      FROM dbo.Duration
) select Duration AS 'seconds',
   CONVERT(varchar(20), DATEADD(second, Duration, 0), 108) AS 'hh:mm:ss' from cte
seconds hh:mm:ss
66479   18:27:59
13354   03:42:34
20310   05:38:30