关于日期查询 急...急(50分)

  • 主题发起人 主题发起人 xlf
  • 开始时间 开始时间
X

xlf

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一数据表,货号,入库日期,怎样写入库日期在某段日期的SQL语句。
窗体上有两个Edit控件。Edit1是起始日期,Edit2是终止日期。
比如:显示入库日期在2000-07-23到2000-08-15之间的记录
(我查过以前的,但好像有误,请各位务必快点!)
 
如用datetimepicker好一些吧!。
like
入库日期>=datetimepicker1.date.and.入库日期<=datetimepicker2.date
我以前用过,应该可以!
 
再详细些好吗?
 
查询日期好象是比较烦!
在EDIT中你得用DATETOSTR来查,这样就成了字符串查询了!
而查字符串与查数据什么的不一样,不是按照我们认为的大小查!!
所以查询日期时,数据格式不能变!
你把EDIT1和EDIT2换成DATETIMEPICKER1和DATETIMEPICKER2。
在查询时间用DATETIMPICKER的返回日期查,也许就可以了。记得以前我的这
么做的!
在细些点的话
select * from yourtable where inoutdate>=datetimepicker1.date.and.inputdate<=datetimepicker2.date
可以吗?

 
你得试试才行!
 
我很少用datetimepicker,这是个什么东西?
 
在WIN32下的一个控件!是DATE的COMBOBOX(我个人认为)不如到济济一堂!
象这样说话太慢!
 
济济一堂在哪?
 
在右边选择条里!!!!
是大富翁的聊天室!!!
 
sql.add('select * from tablename where fieldname between '''+edit1.text+''' and '''+edit2.text+'''');
 
可以使用DATETIMEPICKER或者使用MASKEDIT来确定输入的合理性。
查询时还得看你的数据库类型。如MS SQL的DATETIME(SMALLDATETEIME),它可以使用
字符串来查询(因为SERVER会自动进行转换)
 
这样更好些:
1,在表单中加入datetimepicker1和datetimepicker2及button,query1,datesource1等
需要控件并进行正确的连接处理.我以dbdemos库中的reservat表为例:

2.query1的sql语句:
SELECT * FROM "reservat.db" where card_exp >= :datebegin and card_exp <= :dateend

3.对query1的 params的设置
query1.params[0]的datetype为ftdate
的name为datebegin
value为0:00:00
type为date
query1.params[1]除name为dateend处与上相同

4.对query1进行查询的button

procedure TForm1.Button1Click(Sender: TObject);
begin

query1.active:=false;
query1.Params[0].Value :=datetimepicker1.date;
query1.params[1].value :=datetimepicker2.date;
query1.Active :=true;

end;

5.得到结果!!
 
query1.params[0]和query1.params[1]实际上就是就量datebegin和dateend
把数据库和字段改成你的数据库和数据中的字段及可!!
 

temp0:='select * from tablename where ';
temp1:='to_date(to_char(入库时间,'+''''+'YYYY-MM-DD'+''''+'),'+''''+'YYYY-MM-DD'+''''+')>=to_date('+''''edit1.text+''''+','+''''+'YYYY-MM-DD'+''''+') and '
temp2:='to_date(to_char(入库时间,'+''''+'YYYY-MM-DD'+''''+'),'+''''+'YYYY-MM-DD'+''''+')<=to_date('+''''edit2.text+''''+','+''''+'YYYY-MM-DD'+''''+') '
temp:=temp0+temp1+temp2;
 
用SQL语句 select * from table where datefield between 'date1' and 'date2' 是可以的
用TDateTimePicker控件还是很方便的,不用手工输入真确的日期格式。
因次同意“笑晨”的方法,只是将edit.text换成FormatDateTime('yyyy-mm-dd',datetimepicker.time)
就可以了。也就是:
Query.SQL.Add('select * from table where datefield between '''+FormatDateTime('yyyy-mm-dd',DateTimePicker1.time)+''' and '''+FormatDateTime('yyyy-mm-dd',DateTimePicker2.time)+'''');
 
日期型的要加#,如:#2000/8/27#
 
日期型是常量的时候可以用加#号的方式!不过变量我想我的方法是最好的!!因为
可以充分便用QUERY的性能!!!
 
如果你用SQL SERVER或类似的数据库还可以充分使用它们的存储过程!
 
如何了?
 
是不是你已经结决这个问题了?
 
后退
顶部