(1) 在sql server中用 DATA1>DATA2这样的方式查询日期存在较大的不确定性,因为日期数据常有小时,分钟,稍等数据,一般用datedif(day,data1,data2 )处理。
DATE2,大于DATE1,则相差的天数大于0,否则小于0,如果两者到日期都相等,则等于0
(2) 我在Delphi中用Tadoquery 进行查询时也出现错误 ,错误代码假定是这样的
str:='select * from aa where datediff(day ,日期,:rq1) <0';
qrylist.Close;
qrylist.SQL.Clear;
qrylist.SQL.Add(str);
qrylist.parameters.parambyname(rq1).value:=encodedate(2021,2,1);
qrylist.open
如果是2021年当天的数据,则不会显示 ,对此百思不得其解。
觖决方法
改为:
RQ1:=encodedate(2021,2,1); //这里只是为了方便解释,才用的变量
str:='select * from aa where datediff(day ,日期,datediff(day,日期 ,''' + formatdatetime('c', rq1) + ''')<=0 ';
qrylist.Close;
qrylist.SQL.Clear;
qrylist.SQL.Add(str);
qrylist.open