我用了以下语句查询两个日期之间的记录:(DTPicker1=2004/10/01;DTPicker2=2004/10/24)
getdate between #" & DTPicker1.value & "# and #" & DTPicker2.value & "#"如果记录字段日期 getdate=2004/10/24              (短日期)便可查到如果记录字段日期 getdate=2004/10/24 22:10:55     (长日期就查不到,)
但如果将DTPicker2设为=2004/10/25,那么才可以查到日期字段为
(getdate=2004/10/24 22:10:55  )此记录.为什么,此问题如何解决?

解决方案 »

  1.   

    你用的是sql server 吧?把第二个日期加1天再查.因为between and 就是这样的.
      

  2.   

    不是吧,但getdate=2004/10/24这个日期为什么当DTPicker2=2004/10/24就能查到呀.
      

  3.   

    getdate between #" & format(DTPicker1.value,"yyyy/mm/dd") & "# and #" & format(DTPicker2.value,"yyyy/mm/dd")& "#"
      

  4.   

    //不是吧,但getdate=2004/10/24这个日期为什么当DTPicker2=2004/10/24就能查到呀.可查出日期 <= DTPicker-------------- "控件特性"
      

  5.   

    (DTPicker1=2004/10/01;DTPicker2=2004/10/24)
    getdate between #" & DTPicker1.value & "# and #" & DTPicker2.value & "#"
    我也遇到过这个问题,当输入的日期与最大值相等时,查不到数据。我觉得在查时间时,比如:2004/10/24。系统的默认的长时间为2004/10/24 00:00:00,所以你查不到。但是当输入为短时间格式时就查到了。你可以把最大值加1。DTPicker2=2004/10/25就可以了。这样查询的结果将是2004/10/01---2004/10/24的结果。这只是俺的个人见解,高手指教
      

  6.   

    同意楼上的观点,DATETIME类型精确到3ms,smalldatetime精确到分钟.如果你只输入2004/10/24时系统默认会把它转为2004/10/24 00:00:00.
      

  7.   

    最后我这样处理的:在第二个日期加上1天.这样就可以了,不过还是不解的是SQL语句怎么会这样.
    这应该有待提高的.......
    不过我想应该还是有其他更好的处理方法的.请知晓折朋友们告知.
      

  8.   

    在第二个日期加一班不是好方法,这样做会有BUG,可能会把日期为第二天时间为0的也选上.
    最好的方法把在第一天的日期后加时间,如2004/10/24,将其变为2004/10/24 23:59:59.997(DATATIME型:精确值三毫秒)或者2004/10/24 24:59:00(smalldatetime型:精确值分钟)