当天的吧,你那个<=的查出来的可能比<查出来的少

解决方案 »

  1.   

    真正严格查询某一天的数据,就应该是一个左闭右开区间,
    例如:我要查2013年12月25号的日志,就应该是:select * from pv_logs
     where log_time>=to_date('20131225','YYYYMMDD')
    and log_time<to_date('20131226','YYYYMMDD');-- 这才是严格正确的写法,此时不建议用 BETWEEN...AND
      

  2.   


    因为BETWEEN...AND...是闭区间,即
     where log_time between to_date('20131225','YYYYMMDD')
                        and to_date('20131226','YYYYMMDD');
    等同于:
     where log_time>=to_date('20131225','YYYYMMDD')
    and log_time<=to_date('20131226','YYYYMMDD');
      

  3.   


    因为BETWEEN...AND...是闭区间,即
     where log_time between to_date('20131225','YYYYMMDD')
                        and to_date('20131226','YYYYMMDD');
    等同于:
     where log_time>=to_date('20131225','YYYYMMDD')
    and log_time<=to_date('20131226','YYYYMMDD');
    我又试了一下,才发现原来to_char('2013-09-30','yyyy-mm-dd')其实是把时间转换成了'2013-09-30 00:00:00',之前都误以为是转成了'2013-09-30 23:59:59'....
    所以如你所说必须要用">=T and <T+1"才能取到完整的一天的数据,between会取到第二天00:00:00的数据。
    在下不才,见笑了,多谢各位指教!