在oracle数据库的同一张表中,找出离某个时间点(TIMESTAMP类型)最接近的10条记录,这个时间可以大于或小于当前的时间点,怎么查啊。。

解决方案 »

  1.   

    --这样试试
    select * from 
    (select t.*,row_number() over(order by abs(时间字段-时间点timestamp))rn
    from tablename )
    where rn<=10
      

  2.   

    select * from 
    (select t.*,row_number() over(order by SUBSTR((时间字段-时间点timestamp),2))rn
    from tablename )
    where rn<=10
    abs不能用在timestamp差值上,用substr除去符号位再做比较