当前时间后,你的T-SQL大师:T-SQL - 查询记录之前,并在同一份声明中
我有以下表格:
ID Arrival
1 06:16:00
2 06:17:00
3 07:19:00
4 08:21:00
5 10:22:00
6 13:21:00
7 20:22:00
说的时间是08:00目前AM和我想在最近的时间之前和之后选择2条记录。结果应返回ID为2,3,4,5和6的记录。
在记录ID = 4前后获取记录很简单,但到目前为止,我无法弄清楚如何将完整集作为部分返回相同的查询。我有这两条select语句:
SELECT TOP(2) * FROM Schedules
where (datepart(hour, Arrival) - datepart(hour, getdate()))*60 + datepart(minute, Arrival) - datepart(minute, getdate()) < 0
order by (datepart(hour, Arrival) - datepart(hour, getdate()))*60 + datepart(minute, Arrival) - datepart(minute, getdate())
SELECT TOP(2) * FROM Schedules
where (datepart(hour, Arrival) - datepart(hour, getdate()))*60 + datepart(minute, Arrival) - datepart(minute, getdate()) >= 0
order by (datepart(hour, Arrival) - datepart(hour, getdate()))*60 + datepart(minute, Arrival) - datepart(minute, getdate()) asc
哪些返回前后的记录。我试图在两个语句上使用联合,但这需要删除第一个子句,这会使我的查询条件失效。
任何想法将有所帮助,谢谢。
哇,这个答案。永远不会想到这个给定的时间限制。再次感谢您的链接。 – 2012-02-02 00:35:01