表A的一个字段是datetime比如我要找出这个表中大于2009年3月的数据select * from table  where 【这里我是用to_char(时间字段,'yyyy-mm'),还是用to_date】> 【2009-3这个参数,我是要把它to_date还是就弄个单引号圈起来就行了?】请把比日期的正确写法,where后面的部分重现一下,谢谢。

解决方案 »

  1.   

    select * from table 字段>=to_date('2009-03-01','yyyy-mm-dd')
      

  2.   

    原来的字段不用处理啊?
    参数部分to_date('2009-03-01','yyyy-mm')这要到月份  这样写可以吗
      

  3.   

    虽然两个都能用,从写法上来说TO_CHAR简单,也造成了许多人喜欢用
    但从性能上来说,用to_char在日期字段是不太合适的,因为一般日期字段都会有索引,而用to_char来做比较会使语句不走索引
    在查询数据占总数据的比例很小的情况下,to_char的效率要比to_date差好多
      

  4.   

    这样会报错的
    to_date一定要对应的
    你如果写成20090501,后面的就要写成yyyymmdd
    如果写成2009-05-01 ,就要写成yyyy-mm-dd
      

  5.   

    to_date('2009-03,'yyyy-mm') 这样就OK了~、?
      

  6.   

    考虑效率的话,应该这样:
    select * from table  
     where 时间字段 >=  to_date('20090401','yyyymmdd') 
      

  7.   

    原来的时间字段是不需要处理的,所以
    时间字段>to_date('日期','格式')
    这样就OK了
      

  8.   

    这个表中大于2009年3月的数据?
    这里写上的是3月1号(包括)以后的数据,可以自己改时间:
    select * from table t where t.datetime>=to_date('2009-03-01','yyyy-mm-dd')
      

  9.   

    效率方面应该是用TO_DATE比较高一些