|Client1 | 2017-01-01 08:00:00 | 2017-01-01 08:05:00|
|Client1 | 2017-01-01 08:00:00 | 2017-01-01 08:10:00|
Select ClientName, SUM(date_trunc('second',coalesce(EndTime,now()::timestamp(0))-StartTime)) as duration
from table
group by ClientName
请参考计算实际停机时间忽略日期/时间的重叠
DECLARE @clientUsage TABLE (
ID INT PRIMARY KEY NOT NULL IDENTITY(1,1),
ClientName VARCHAR(25),
StartTime DATETIME,
EndTime DATETIME
)
INSERT @clientUsage (ClientName, StartTime, EndTime) VALUES
('client', '2014-11-20 17:31:01.467', '2014-11-20 18:01:01.243')
,('client', '2014-11-28 17:59:00.987', '2014-11-28 18:09:02.167')
,('client', '2014-11-28 18:00:01.403', '2014-11-28 18:25:01.443')
,('client', '2014-11-29 19:13:08.580', '2014-11-30 05:30:01.763')
,('client', '2014-11-30 01:55:01.953', '2014-11-30 03:54:01.730')
,('client 2', '2014-12-19 23:09:01.303', '2014-12-22 09:43:01.397')
,('client 2', '2014-12-19 23:09:01.303', '2014-12-22 09:43:01.397')
,('client 2', '2014-12-19 23:09:01.303', '2014-12-22 09:43:01.397')
,('client 2', '2014-12-19 23:09:01.303', '2014-12-22 09:43:01.397')
,('client 2', '2014-12-19 23:09:01.303', '2014-12-22 09:43:01.397')
如果使用表而不是临时表
select clientname,sum(actual) from
(SELECT
clienttime.ClientName,
clienttime.StartTime,
clienttime.EndTime,
COALESCE(Actual, 0) AS Actual
FROM @clientUsage clienttime
LEFT OUTER JOIN (
SELECT DISTINCT
D1.ClientName,
MIN(CASE WHEN D1.StartTime < D2.StartTime THEN D1.ID ELSE D2.ID END) AS [ID],
MIN(CASE WHEN D1.StartTime < D2.StartTime THEN D1.StartTime ELSE D2.StartTime END) AS [StartTime],
MAX(CASE WHEN D1.EndTime > D2.EndTime THEN D1.EndTime ELSE D2.EndTime END) AS [EndTime],
DATEDIFF(MINUTE,
MIN(CASE WHEN D1.StartTime < D2.StartTime THEN D1.StartTime ELSE D2.StartTime END),
MAX(CASE WHEN D1.EndTime > D2.EndTime THEN D1.EndTime ELSE D2.EndTime END)) AS Actual
FROM @clientUsage D1
INNER JOIN @clientUsage D2
ON D1.ClientName = D2.ClientName
AND (D1.StartTime BETWEEN D2.StartTime AND D2.EndTime
OR D2.StartTime BETWEEN D1.StartTime AND D1.EndTime)
GROUP BY
D1.ClientName,
D1.StartTime
) Outages
ON Outages.ID = clienttime.ID) op group by clientname
我在sql Server中进行了测试。
问题内容: 如何在PHP中计算两个日期时间之间的分钟差? 问题答案: 从过去的一减去最近的一并除以60。 时间以Unix格式完成,因此它们只是一个很大的数字,显示从
问题内容: 如何为Python中以下时间戳计算以分钟为单位的时间差? 问题答案:
问题内容: 这就是我目前所拥有的 我觉得是对的。数小时和数天应该是- 然后- 但是我的时间和日子是不正确的 问题答案: 一种简单的计算时间的方法是使用类似 如果您的天数超过28天,则可以使用此功能,但是如果您的时间为负数,则无法使用。
问题内容: 我需要获取两个日期之间的分钟数。我知道Joda是最适合使用的,但这是针对Android项目的,因此,我更喜欢使用一些外部库,并且我正在构建的应用程序不需要计算得很精确。 但是,我正在使用的代码似乎无法正常工作。我正在尝试获取“ 11/21/2011 7:00:00 AM”和“ 11/21/2011 1:00:00 PM”之间的分钟数(应该为360分钟),但是代码我’m using返回0
请注意,某些ID重复,我只想要每个唯一ID的计数之和。正确的总数是11。 注意:我必须将第一个集上的id编辑为1 输入文件示例:
我有一个函数,受hms的启发,但我希望将其扩展到包括处理和显示天数。 我已经开始编辑脚本,但很快意识到我在处理逻辑方面超出了我的深度,几个小时跑到几天,反之亦然...... 以下是我到目前为止所拥有的: 秒:“那花了4天1小时1分1秒才运行。” < code>127932秒:“运行时间为1天11小时32分12秒。” < code>86400秒:“花了1天时间运行。” 秒:“这花了4天97小时1分1