L
lmemail
Unregistered / Unconfirmed
GUEST, unregistred user!
以前一直没有注意这个问题,
昨天统计结果差了两天我才发现delphi的实数型时间跟sql不一样!
现在用下面一段代码测试结果真的入此
代码如下
begintime:TDate;
begin
memo3.Lines.Add('开始统计');
begintime:=MonthCalendar1.date; //开始时间;
memo3.Lines.Add(datetostr(begintime));
//早上情况
adoquery2.SQL.Clear;
adoquery2.SQL.add(' select * from signrecord ');
adoquery2.SQL.add(' where 日期时间>'+ floattostr(begintime));
adoquery2.SQL.add(' and 日期时间<'+ floattostr(begintime+0.5));
adoquery2.Active:=true;
memo3.Lines.Add('统计结束');
end;
本来应该显示MonthCalendar1控件选中的当天早上的数据,结果出来的是两天以后的的早上数据
这个表示delphi的日期,跟sql的日期差两天吗?
如begindate为2002-10-8的时间
而sql出来的结果集为 2002-10-10的时间段数据,
是否delphi的实数形的日期,跟sql的实数型日期差两天??????
[red]原来delphi定义1899-12-30日为实数0,所以1900-1-1为实数2;
而sql定义1900-1-1日为实数0;[/red]
所以用上面的语句就统计就会出现差两天的错!
我不知道为什么定义会不同,有人知道顶一下,不过直接用日期型到没有事情,用实数这样操作就会有问题!!
昨天统计结果差了两天我才发现delphi的实数型时间跟sql不一样!
现在用下面一段代码测试结果真的入此
代码如下
begintime:TDate;
begin
memo3.Lines.Add('开始统计');
begintime:=MonthCalendar1.date; //开始时间;
memo3.Lines.Add(datetostr(begintime));
//早上情况
adoquery2.SQL.Clear;
adoquery2.SQL.add(' select * from signrecord ');
adoquery2.SQL.add(' where 日期时间>'+ floattostr(begintime));
adoquery2.SQL.add(' and 日期时间<'+ floattostr(begintime+0.5));
adoquery2.Active:=true;
memo3.Lines.Add('统计结束');
end;
本来应该显示MonthCalendar1控件选中的当天早上的数据,结果出来的是两天以后的的早上数据
这个表示delphi的日期,跟sql的日期差两天吗?
如begindate为2002-10-8的时间
而sql出来的结果集为 2002-10-10的时间段数据,
是否delphi的实数形的日期,跟sql的实数型日期差两天??????
[red]原来delphi定义1899-12-30日为实数0,所以1900-1-1为实数2;
而sql定义1900-1-1日为实数0;[/red]
所以用上面的语句就统计就会出现差两天的错!
我不知道为什么定义会不同,有人知道顶一下,不过直接用日期型到没有事情,用实数这样操作就会有问题!!