Tsql 如何在t-sql中显示有时间中断的时间范围

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

目前我正在监视设备的使用情况。因此,设备在使用中的每一分钟都会在我的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 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              |