DELPHI7开发Access数据库提示的"标准表达式中数据类型不匹配"

今天在写一个代码的时候,用了如下代码:

 sSql:= 'select * from Aip1 where ';
     sSql :=sSql +'time >=
'+#39+FormatDatetime('YYYY-MM-DD 00:00:00',wwDBDateTimePicker1.DateTime)+#39;
     sSql :=sSql +' and time <'
+#39+FormatDatetime('YYYY-MM-DD 23:00:00',wwDBDateTimePicker1.DateTime)+#39;
        adoQ.Close;
     adoQ.SQL.Clear;
     adoQ.SQL.Text :=sSql;
     adoQ.Open;

发现老提示"标准表达式中数据类型不匹配",郁闷不以,后来终于发现这样的写法只适合在Sql server中,而在Access中必须按照它的写法来,就写成了下面的样子 :

     sSql:= 'select * from Aip1 where ';
     sSql:= sSql+' time >=#'+dateToStr(wwDBDateTimePicker1.date)+'#';
     sSql:= sSql+' and time <#'+dateToStr(wwDBDateTimePicker1.date+1)+'#';
     adoQ.Close;
     adoQ.SQL.Clear;
     adoQ.SQL.Text :=sSql;
     adoQ.Open;

SQL中,日期时间用单引号( ' ),如 '1999-1-1 12:12:12'
其中时间的时分秒之间用 [blue]一个 冒号( : ) 分隔

Access中,日期时间用 # 号,如 #1999-1-1 12::12::12#
其中时间的时分秒之间用 [blue]两个冒号( :: ) 分隔


以后再遇见这样的问题,只需要去找找Access中的标准写法,问题就可以解决了

你可能感兴趣的:(DELPHI)