急!!比较日期字段的问题:为什么非得转换成字符串型才能比较...(另加控件礼包求解)! (100分)

  • 主题发起人 主题发起人 小乙
  • 开始时间 开始时间

小乙

Unregistered / Unconfirmed
GUEST, unregistred user!
两个日期字段进行比较:运行是必须要将日期型转换成字符串型才能比较!
而且显示结果中有大量重复即相同日期的字段出现!我没有用SQL语句,单纯
使用的是DELPHI语句,我使用paradox桌面数据库,注册BDE,请高人指点迷津!
 
不要啊,可以比较啊,但为什么不用SQL,这个从数据库取出就好了
 
不一定要,得看看数据库支持什么。
 
转换成字符: Paradox 是的。
另一个不懂!
 
干吗不用Sql呢
 
多谢各位的关注与参与!之所以没有用SQL,是因为我尝试了好几种SQL语句方式没有成功,所以
尝试不用SQL语句,单纯用DELPHI语句试试,没想到出现了这样的问题!?
我要解决的问题是这样的:
有进货日期、品名、进价、数量这些字段组成的表
有销售日期、品名、售价、数量这些字段组成的表
我要动态按照一个日期段统计,并显示出这些结果:日期(DatetimePicker1与DatetimePicker2之间)
品名、期初数量(=当日以前所有入库-当日以前所有出库)、入库数量、销售数量、
结存数量(=期初数量+入库数量)、累计入库(当日以前的所有)、累计出库(当日以前的所有)

这个问题很有挑战性!得分者如不够我另送2套所要求的控件满足大家!!!!!!!!!!!!!!
 
强调一下
 
日期型的可以相减不要把他转成字符型的呀
 
兄弟,还痛苦着?
paradox我没有用过,里面的日期型是怎么样表示的?
 
试一试 sql
关于where条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如下:

  (1)如果是access数据库,则为:where mydate>#2000-01-01#

  (2)如果是oracle数据库,则为:where mydate>cast('2000-01-01' as date) 或:where mydate>to_date('2000-01-01','yyyy-mm-dd')

  在delphi中写成:

  thedate='2000-01-01';

  query1.sql.add('select * from abc where mydate>cast('+''''+thedate+''''+' as date)');

  如果比较日期时间型,则为:

  where mydatetime>to_date('2000-01-01 10:00:01','yyyy-mm-dd hh24:mi:ss')
 
可以直接比较的,利用参数来进行查询
例如:
QSales.SQL.Text := 'select * from sales where saledate >= :d1';
QSales.ParamByName('d1').AsDateTime := DateTimePicker1.Date;
QSales.Active := True;

我试过的,可以查询
 
我使用了两个DateTimePicker和一个Date()函数来获取当前时间,并让DateTimepicker2.date
:=Date(); p:=DateTimePicker1.date;
为了建立一个从p到Date()的日期表,我采用了while循环,并让日期变量
i作为累加值,i:=StrToDate('1999-12-31');但是循环有时候认为p的值大于当前日期!
例如p的值是'02-11-1',date():='02-11-28',怎么能大于呢?
我当然还是痛苦!客户在着急催着,我在上火!!
 
哥们 ! 你遇到我上次的我问题一样 换吧 SQL 语句好好得多 真的 我以前也用
过那数据库写过一个东西 但是在使用中不是很稳定 如果考虑编程和维护 请换
吧 这是我的建议 。
 
SQL语句该如何用呢,我试了几遍没成功,“半疯.半仙”兄您是如何解决的呢?
哪位还有高见呢?难道没有人愿意拿分或不屑还是嫌分少?我说过得分者另给2套
任选的控件的,因为我收集的控件特别全,目前正利用时间一点点上传到我的网站
供大家使用以答谢诸位:http://xiaoyi26.y365.com
[:)]
 
哪位能帮我解决建立两个Datetimepicker之间的时间表(按时间顺序)就可以给分了。
 
关注????
 
关于查询,请参照我上面的方法,我的方法都是经过验证的
建立时间表的一个方法,每天一条记录
在窗体上放一个ListBox和一个Button

procedure TForm1.Button1Click(Sender: TObject);
var
d1: TDateTime;
d2: TDateTime;
i: Integer;
FirstDay: Integer;
LastDay: Integer;
begin
ListBox1.Clear;
d2 := Now;
d1 := d2 - 1001;
FirstDay := Trunc(d1);
LastDay := Trunc(d2);
for i := FirstDay to LastDay do
begin
//此处可以改为向数据库中插入记录的代码
ListBox1.Items.Add(FormatDateTime('yyyy"年"MM"月"dd"日"', i));
end;
end;
 
在delphi中也可直接比较
 
Paradox中在where中比较的字段好象必须要建索引
 
后退
顶部