如表 cc
c_date varchar2(20)20070502
20070804
20060528
20070507
20080412
查找离20070504最近的日期

解决方案 »

  1.   

    先吧5月四号之前的都找出来 然后按降序排列 取第一条就是了select * from (select c_date from cc where c_date<'20070504' order by c_date desc) where rownum = 1
    如果找5月四号之后的一天同样的道理
      

  2.   

    那两条语句来找
    第一条找5.4之前的max
    第二条找5.4之后的min
    并计算与5.4之间的相差
    union之后找差值最小的一条
      

  3.   


    没看明白你要表达什么意思,  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 
      

  4.   

    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