SQL 取出时间在当前时间前后最近的两条记录

如题所述

第1个回答  2011-03-12
如果数据库也存在对应当前时间的一条数据呢,要不要也要一起取。
假设要的话,oracle的写法是这样子,假如当前时间是current_time, 有数据表TABLE1,字段为data和create_date 可以这样写
select * from (select * from TABLE1 where create_date > current_time order by create_date ) where rownum = 1
union
select * from (select * from TABLE1 where create_date < current_time order by create_date desc) where rownum = 1
union
select * from TABLE1 where create_date = current_time and rownum = 1
意思就是取得小于目标时间的最大的一条记录和大雨目标时间的最小的一条记录以及等于目标时间的一条记录的结果集。因为oracle没有类似于sql server的limit和top这些函数,只能通过排序来取得最近的记录,如果是sql server简单多了。本回答被提问者采纳
相似回答