select sum(nvl(value,0)) from account where purchasedat = 
to_date(20040402,'yyyymmdd');

解决方案 »

  1.   

    select sum(nvl(value,0)) from account where purchasedat = 
    to_date('20040402','yyyymmdd');
      

  2.   

    在trunc(purchasedat)代替purchasedat我以前遇到过。
    一些系统喜欢把操作时间、修改时间等记录到秒。
      

  3.   

    select sum(nvl(value,0)) from account where to_char(purchasedat,'yyyymmdd'); = 
    '20040402'
      

  4.   

    先看字段记录的是日期时间还是日期型,如果是日期则使用:
    select sum(value) from account where purchasedat = 
    to_date('20040402','yyyymmdd');应该可以查到记录,如果是日期时间型则需要使用:
    select sum(nvl(value,0)) from account where trunc(purchasedat) = 
    to_date('20040402','yyyymmdd');
    或select sum(nvl(value,0)) from account where to_char(purchasedat,'yyyymmdd'); = 
    '20040402'
    或select sum(nvl(value,0)) from account where purchasedat between  
    to_date('20040402','yyyymmdd') and to_date('20040402','yyyymmdd')+1
    数据很多且基于purchasedat有索引时最好用最后一种可以用上索引.