没看明白你要表达什么意思, 20050505比20070504大么??如果要找20070504之前最接近的一天那么 select * from (select c_date from cc where c_date <='20070504' order by c_date desc) where rownum = 1 如果要找20070504之后最接近的一天那么 select * from (select c_date from cc where c_date >='20070504' order by c_date) where rownum = 1
select c_date from( select max(c_date) c_date,to_date('20070504','yyyymmdd')-to_date(max(c_date),'yyyymmdd') be_day from a where a.cdate<'20070504' union all select min(c_date) ,to_date(min(c_date),'yyyymmdd')-to_date('20070504','yyyymmdd') from a where a.cdate>'20070504'order by be_day ) where rownum=1
如果找5月四号之后的一天同样的道理
第一条找5.4之前的max
第二条找5.4之后的min
并计算与5.4之间的相差
union之后找差值最小的一条
没看明白你要表达什么意思, 20050505比20070504大么??如果要找20070504之前最接近的一天那么
select * from (select c_date from cc where c_date <='20070504' order by c_date desc) where rownum = 1 如果要找20070504之后最接近的一天那么
select * from (select c_date from cc where c_date >='20070504' order by c_date) where rownum = 1
from(
select max(c_date) c_date,to_date('20070504','yyyymmdd')-to_date(max(c_date),'yyyymmdd') be_day
from a
where a.cdate<'20070504'
union all
select min(c_date) ,to_date(min(c_date),'yyyymmdd')-to_date('20070504','yyyymmdd')
from a
where a.cdate>'20070504'order by be_day
)
where rownum=1