Используя функцию LAG
, вы можете сравнить каждую дату с предыдущей и посмотреть, составляет ли разница более 1 секунды.
IF OBJECT_ID('tempdb..#Dates') IS NOT NULL
DROP TABLE #Dates
CREATE TABLE #Dates (
sDateTime DATETIME)
INSERT INTO #Dates (
sDateTime)
VALUES
('1908-01-01 00:00:09'),
('2018-01-01 00:00:00'),
('2018-01-01 00:00:01'),
('2018-01-01 00:00:04'),
('2018-01-01 00:00:05')
;WITH Lag AS
(
SELECT
sDateTime = D.sDateTime,
PreviousAvailableDateTime = LAG(D.sDateTime, 1, NULL) OVER (ORDER BY D.sDateTime ASC)
FROM
#Dates AS D
)
SELECT
L.sDateTime,
L.PreviousAvailableDateTime,
IsThereAGap = CASE WHEN DATEADD(SECOND, 1, L.PreviousAvailableDateTime) <> L.sDateTime THEN 'Yes' END
FROM
Lag AS L
Результаты:
sDateTime PreviousAvailableDateTime IsThereAGap
----------------------- ------------------------- -----------
1908-01-01 00:00:09.000 NULL NULL
2018-01-01 00:00:00.000 1908-01-01 00:00:09.000 Yes
2018-01-01 00:00:01.000 2018-01-01 00:00:00.000 NULL
2018-01-01 00:00:04.000 2018-01-01 00:00:01.000 Yes
2018-01-01 00:00:05.000 2018-01-01 00:00:04.000 NULL