比如,用户给你一个String的日期值, 2009-09-10,我怎么取得这一天内的数据呢,表里的update_time为date型,标识时间。where条件应该怎么写?update_time > ** and update_time < **
谢谢了。

解决方案 »

  1.   

    update_time between to_date('2009-09-10','yyyy-mm-dd') and
    to_date('2009-09-10','yyyy-mm-dd')+0.99999
      

  2.   

    不是 最后的值加1吗?如果传过来的String 是 2009-09-10 10:34:23 呢?
      

  3.   

    取得这一天内的数据是指什么意思?
    如果传过来的String 是 2009-09-10 10:34:23 
    是取2009-09-10 00:00:00  --   2009-09-10 23:59:59的数据
    还是取2009-09-10 10:34:23 --  2009-09-10 23:59:59的数据
    还是取2009-09-10 10:34:23 --  2009-09-11 10:34:23的数据?
      

  4.   


    --用trunc函数
    select * from table where trunc(update_time)=turnc(sysdate)
      

  5.   


    最方便,但是需要函数索引如果不怕麻烦,还是用 >= to_date(:datastr, 'yyyy-mm-dd') and < to_date(:datastr, 'yyyy-mm-dd')+1
      

  6.   

     lz 4楼的方法如果说你表数据比较大,date上只有普通的索引,不是trunc函数索引,会很慢的.  老老实实用5楼的方法吧