在某些数据中获取离当前时间最近的数据
--测试数据
CREATE TABLE #testTable(id INT,addTime DATETIME)
INSERT INTO #testTable
SELECT 1,'2013-7-8 12:00:00' UNION ALL
SELECT 3,'2013-04-23 10:00:00' UNION ALL
SELECT 4,'2013-04-24 12:00:00' UNION ALL
SELECT 5,'2013-04-24 16:00:00'
SELECT * FROM #testTable
--思路,获取所有时间与当前时间之隔,转换为 Float 类型之后取绝对值,最小的数据就是最近的。
SELECT TOP 1 * FROM #testTable ORDER BY ABS(CAST((addTime - GETDATE())as FLOAT)) ASC
DROP TABLE #testTable
/*
当前时间是 14:33 事实离 16:00 才是最近的。
id addTime
----------- -----------------------
5 2013-04-24 16:00:00.000
(1 row(s) affected)
*/