SELECT DPT_DT FROM TEST WHERE to_date(DPT_DT,'dd-MM-yyyy') <= to_date(add_months(sysdate,-6),'dd-MM-yyyy') 如上sql文,其中有一条记录DPT_DT字段(date类型)的数据为2008-02-10、但问题是查不到该数据!?!如果我把to_date函数去掉,如下sql文就能查到!
SELECT DPT_DT FROM TEST WHERE DPT_DT <= add_months(sysdate,-6) 
而且最上面的sql文我在另外一个电脑的数据库中试却好用,请问这是为什么????

解决方案 »

  1.   

    本来它已经是日期了,为何你还要转换为日期呢?
    如果是第一个句子,应该用to_char比较SELECT DPT_DT FROM TEST 
    WHERE to_char(DPT_DT,'yyyy-MM-dd') <= to_date(add_months(sysdate,-6),'yyyy-MM-dd') 
      

  2.   

    估计是存在隐式类型转换导致查不出数据(windows客户端日期显示格式不同,转换的结果自然不同)。
    对你来说,SELECT DPT_DT FROM TEST WHERE DPT_DT <= add_months(sysdate,-6)是正确的引用;