我有一个栏位为test_date为date类型,写sql的where条件时为什么要to_date(test_date) = TO_DATE('12/02/2012','dd/MM/yyyy')这样才有值,test_date = TO_DATE('12/02/2012','dd/MM/yyyy')就没有值。test_date 就是date类型,为什么还要用to_date()

解决方案 »

  1.   

    怎么可能 时间类型 再to_date()会报错的
      

  2.   

    你不用to_date 直接where test_date有值吗?
      

  3.   

    你后面的to_date时间取整了,你字段里面存的实际值是什么样的 也是和where条件后面一样吗
      

  4.   

    这个问题的应该就是to_date这个函数的默认格式的问题,你可以做以下的实验:
    执行该语句,你会发现两列的结果是不一样的。
    select to_date(test_date),test_date from table_name;
    我个人觉得是oracle的to_date函数默认格式的原因,时间原因没有多分析,你可以研究下,给大家公布下一个结果,呵呵呵。
      

  5.   

    额……
    select test_date from table 
    显示的是YYYY/MM/DD hh24:mi:ss形式的吧……
      

  6.   

    oracle 默认Date类型的 日期格式是 dd/MM/yyyy  
    test_date 即结果数据的格式为 yyyy-MM-dd HH24:mi:ss ---  所以如果想要得出结果有两种方式:
    1.test_date = to_date('2012-02-12','yyyy-MM-dd');
    2.to_date(test_date) = to_date('12/02/2012','dd/MM/yyyy');
      

  7.   

    select test_date from yourtbl;
    可知,你这个结果如果是 '2011-12-05 23:25:25’ 这样的,那么不加 to_date,是查不到数据的。
    因为:'2011-12-05 23:25:25’ <> '2011-12-05'
    如加了to_date ,则两者结构形式一样,值自然就能查出来。