开发一个系统过程中,客户要求用ACCESS,有些记录必须保存时间,用的是NOW,在检索的时候要求用SQL语句查询X月X日到X月X日时间的记录:
开始直接用日期控件的text值,但发现好像查到的东西是少了,原因在于它自动把日期都变成X月X日00:00:00;我就把第二个日期控件的值加上'23:59:59’,然后发现这样不行,一直出错,原来是和时间的显示方式有关系,我的是用AM/PM的,这么说要让客户去控制面板里改变时间的显示方式或者自己编程把它改成标准形式,都不妥,放弃。
   到网上找资料发现很多人说用dateof或者trunc函数,他们没有明白这在SQL语句根本是不行的,于是我用convert等其他SQL语句的想把含日期和时间的NOW的记录取出日期来再和要查询的时间比较,结果发现似乎是ACCESS不支持这几个SQL函数!后来想了个笨方法,就是临时生成一个表有两个记录,它们都是datetime类型,含日期和时间的,然后把要查询的日期加上时间,一个加00:00:00;另一个再加上23:59:59;然后再保存到表中,这样再比较就不会出错了。
   无意中发现还有一种方法就是用SQL.parameter的,明天贴出源代码。
   本人见识有限,欢迎大家来探讨:就是在ACCESS中如何用SQL语句实现把datatime类型的数据取出它的date数据来检索这些数据
   我不希望看到类似这样的答案:类似用临时表的,就是把每个数据的datetime值取出然后取出DATE然后比较,符合的就添加到新表中,新表的内容就是要查询的内容
   只写部分代码
     for i:=1 to adoquery1.recordcount do begin
       with aodquery1 do begin
         first;
         date1:=trunc(filedbyname('datetimestr').value);
         if date1>=.. and date1<=... then begin
            adoquery2.append;
            adoquery2.fieldbyname(..)...    :=fieldbyname()...;
            ...
         end;
         next;
       end;   
     end;