Try this:
--Create a simulation table
IF OBJECT_ID('ParcelTest', 'U') IS NOT NULL DROP TABLE ParcelTest
CREATE TABLE ParcelTest
(
ID INT identity(1000, 1) PRIMARY KEY,
ShipDate DATETIME,
Name VARCHAR(30)
)
GO
--Create test data
DECLARE @DATETIME DATETIME
SET @DATETIME = FLOOR(Cast(GetDate() as FLOAT))
INSERT INTO ParcelTest (ShipDate, Name) VALUES (DateAdd(SECOND, -40, @DATETIME), 'Parcel')
INSERT INTO ParcelTest (ShipDate, Name) VALUES (@DATETIME, 'Parcel')
INSERT INTO ParcelTest (ShipDate, Name) VALUES (DateAdd(SECOND, 1, @DATETIME), 'Parcel')
INSERT INTO ParcelTest (ShipDate, Name) VALUES (DateAdd(SECOND, 3, @DATETIME), 'Parcel')
INSERT INTO ParcelTest (ShipDate, Name) VALUES (DateAdd(SECOND, 70, @DATETIME), 'Parcel')
GO
--Here is the meat of the question:
DECLARE @secondsBetween INT
SET @secondsBetween = 3
SELECT *
FROM ParcelTest
WHERE EXISTS
(
SELECT *
FROM ParcelTest As x
WHERE x.ID <> ParcelTest.ID AND ABS(DATEDIFF(SECOND, ParcelTest.ShipDate, x.ShipDate)) <= @secondsBetween
)
Reputation Points: 1749
Solved Threads: 735
Senior Poster
Offline 3,948 posts
since Feb 2009