Tsql 如何在t-sql中显示有时间中断的时间范围
目前我正在监视设备的使用情况。因此,设备在使用中的每一分钟都会在我的sql server上创建一个日志条目。当设备不在使用时,时间流中会出现中断。有没有办法让输出显示如下内容Tsql 如何在t-sql中显示有时间中断的时间范围,tsql,time,range,Tsql,Time,Range,目前我正在监视设备的使用情况。因此,设备在使用中的每一分钟都会在我的sql server上创建一个日志条目。当设备不在使用时,时间流中会出现中断。有没有办法让输出显示如下内容 01/01/2020 10:01 - 01/01/2020 10:14 01/01/2020 13:15 - 01/01/2020 13:26 下面是我的数据现在的样子 您可以使用TSQL窗口功能获取下一个时间戳是什么 DROP TABLE IF EXISTS #dataset ; -- USE Recursive C
01/01/2020 10:01 - 01/01/2020 10:14
01/01/2020 13:15 - 01/01/2020 13:26
下面是我的数据现在的样子
您可以使用TSQL窗口功能获取下一个时间戳是什么
DROP TABLE IF EXISTS #dataset ;
-- USE Recursive CTE to create a Table #dataset that we can work with
WITH cte
AS (
SELECT GETUTCDATE() AS [DateTime], 1 AS counters, 'device-1' AS device_name
UNION ALL
SELECT
-- Cause a Break at 10th and 15th row
IIF(cte.counters IN ( 10, 15 ), DATEADD( MINUTE, 10, cte.[DateTime] ), DATEADD( MINUTE, 1, cte.[DateTime] ))
, 1 + cte.counters
, cte.device_name
FROM cte
WHERE cte.counters < 20
)
SELECT *
INTO #dataset
FROM cte ;
-- Now that we have a TestDataSet - Let us Query
SELECT
[DateTime]
, device_name
, LEAD( [DateTime] ) OVER (PARTITION BY device_name ORDER BY [DateTime]) AS next_DateTime
, CASE
-- LEAD( [DateTime] ) OVER (PARTITION BY device_name ORDER BY [DateTime]) is what the next time now
WHEN DATEDIFF( MINUTE, [DateTime], LEAD( [DateTime] ) OVER (PARTITION BY device_name ORDER BY [DateTime])) > 1 /*Tollerance*/ THEN
'break'
ELSE 'ok' END AS break_check_code
FROM #dataset ;
请参见运行此示例您尝试了什么,查看了哪些示例(因为有很多)。试着看看差距和孤岛问题。我还没有,我正在研究如何解决这个问题,我以前从未见过这样的事情。另外,我正在研究差距和孤岛问题。请不要生我的气,想象一下每个用户在研究阶段开始时都会发帖。。
|DateTime |device_name|next_DateTime |break_check_code|
|2020-01-30 17:00:19.483|device-1 |2020-01-30 17:01:19.483|ok |
|2020-01-30 17:01:19.483|device-1 |2020-01-30 17:02:19.483|ok |
|2020-01-30 17:02:19.483|device-1 |2020-01-30 17:03:19.483|ok |
|2020-01-30 17:03:19.483|device-1 |2020-01-30 17:04:19.483|ok |
|2020-01-30 17:04:19.483|device-1 |2020-01-30 17:05:19.483|ok |
|2020-01-30 17:05:19.483|device-1 |2020-01-30 17:06:19.483|ok |
|2020-01-30 17:06:19.483|device-1 |2020-01-30 17:07:19.483|ok |
|2020-01-30 17:07:19.483|device-1 |2020-01-30 17:08:19.483|ok |
|2020-01-30 17:08:19.483|device-1 |2020-01-30 17:09:19.483|ok |
|2020-01-30 17:09:19.483|device-1 |2020-01-30 17:19:19.483|break |
|2020-01-30 17:19:19.483|device-1 |2020-01-30 17:20:19.483|ok |
|2020-01-30 17:20:19.483|device-1 |2020-01-30 17:21:19.483|ok |
|2020-01-30 17:21:19.483|device-1 |2020-01-30 17:22:19.483|ok |
|2020-01-30 17:22:19.483|device-1 |2020-01-30 17:23:19.483|ok |
|2020-01-30 17:23:19.483|device-1 |2020-01-30 17:33:19.483|break |
|2020-01-30 17:33:19.483|device-1 |2020-01-30 17:34:19.483|ok |
|2020-01-30 17:34:19.483|device-1 |2020-01-30 17:35:19.483|ok |
|2020-01-30 17:35:19.483|device-1 |2020-01-30 17:36:19.483|ok |
|2020-01-30 17:36:19.483|device-1 |2020-01-30 17:37:19.483|ok |
|2020-01-30 17:37:19.483|device-1 |NULL |ok |