您正在寻找最大的小日期和最小更大日期。
试试这样说:
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