select * from r3_so where to_char(erzet,'yyyy-mm-dd hh24:mi:ss') = '2010-07-16 09:57:02';
其中erzet是date型,这个数据存在,但是这样select为什么不能成功呢?select * from r3_so where trim(to_char(erzet,'yyyy-mm-dd hh24:mi:ss')) = '2010-07-16 09:57:02';
这样就可以难道是to_char返回的类型不对吗?请指点

解决方案 »

  1.   


    返回的对,trim是多余的,因为to_char里面的字符串'yyyy-mm-dd hh24:mi:ss'已经表明了返回的字符串前后没有空格。
      

  2.   


    但是为什么trim能解决问题呢?知道原因吗?
    刚刚我尝试了,把trim换成to_char,也就是to_char(to_char(erzet,'yyyy-mm-dd hh24:mi:ss'))这样也可以,所以我怀疑是返回类型的原因
      

  3.   

    没发现你说的问题,你最好看看自己的字符串是不是写的正确
    SQL> SELECT 1 FROM dual WHERE to_char(trunc(SYSDATE),'yyyy-mm-dd hh24:mi:ss')='2010-07-28 00:00:00';
     
             1
    ----------
             1
     
    SQL> 
      

  4.   

    不应该啊,已经to_char了怎么还需要再to_char
      

  5.   


    我检查了一下字符串,没有发现问题,当时是select出来的,然后我反向又粘贴回去了。
    不过现在我又仔细看了一下,改了字符串,可以了。多谢。