您正在尋找最大的小日期和最小更大日期。
試試這樣說:
DECLARE @tbl TABLE(userid INT,[status] NVARCHAR(100),actionDateTime DATETIME);
INSERT INTO @tbl VALUES
(113,'emailPending',{ts'2016-11-24 11:59:26.427'})
,(113,'emailVerified',{ts'2016-12-10 17:21:15.240'})
,(113,'Active',{ts'2017-02-07 13:24:01.330'});
DECLARE @From DATETIME={ts'2016-12-12 00:00:00'};
DECLARE @To DATETIME={ts'2017-02-20 23:59:59'};
SELECT * FROM @tbl AS t
WHERE t.actionDateTime >= ISNULL((SELECT MAX(x.actionDateTime) FROM @tbl AS x WHERE x.actionDateTime<@From),{d'2000-01-01'})
AND t.actionDateTime <= ISNULL((SELECT MIN(x.actionDateTime) FROM @tbl AS x WHERE x.actionDateTime>@To),{d'9999-01-01'});
結果
userid status actionDateTime
113 emailVerified 2016-12-10 17:21:15.240
113 Active 2017-02-07 13:24:01.330
表粘貼爲文本,而不是XML。 –
如果日期介於「2016-12-12 00:00:00.0」和「2017-02-20 23:59:59.999」之間,結果將僅返回「有效」。 'emailVerified'用於'2016-12-10'! –
@ahmedabdelqader在2016-12-12他的狀態是emailVerified,我也想要。 – itsraja