续“请问如何用 SQL 查询以日期为标准的数据? ”(50分)

  • 主题发起人 主题发起人 ndyufei
  • 开始时间 开始时间
N

ndyufei

Unregistered / Unconfirmed
GUEST, unregistred user!
这个 Access 当中的字段我是定义成“日期”型的,不过是属于“2002年3月3日”这样
的日期型,我想做一个用户可以根据其中选择的月份来查询!我在当中放了两个
DateTimePicker 控件,然后用户在第一个控件当中选择月头(比如是 2002 年 3 月
1日),在另一个控件当中选择月尾(比如是 2002 年 4 月 12 日),这样的话如何用
SQL 来进行查询,请教各位大哥!
当得到“QuickSilver”提供的以下答案之后我却没办法进行调试!不知哪位高手能帮助
我?谢谢!
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from table1 where field between :para1 and :para2');
adoquery1.Parameters.ParamByName('para1').value:=DateTimePicker1.Datetime;
adoquery1.Parameters.ParamByName('para2').value:=DateTimePicker2.Datetime;
adoquery1.open;
,如有知道者请列出操作过程与步骤!非常感谢!




 
什么叫“没办法进行调试”啊?
设计时直接在adoquery控件的SQL里输入上述select...语句,然后在Parameters里面分别指定
para1、para2类型并相应输入日期值,再选择adoquery的 Active 为 true 就能得到结果啦
 
有两句要改一改:
adoquery1.Parameters.ParamByName('para1').value:='#'+formatdatetime('yyyy-mm-dd hh::nn::ss',DateTimePicker1.Datetime)+'#';
adoquery1.Parameters.ParamByName('para2').value:='#'+formatdatetime('yyyy-mm-dd hh::nn::ss',DateTimePicker2.Datetime)+'#';
 
还有谁有什么好的建议吗?
 
我用的是oracle数据库,你改一改SQL语句。
dmMain.dtsRegistStat.Active:=False;
dmMain.dtsRegistStat.CommandText:='SELECT PhoneCode,Count(InfoID) AS SumQuantity FROM YW_Info WHERE to_char(RegisterDate,''yyyy.mm.dd'') between'''
+ DateToStr(TJ_frmInputRegisterDate.dtpRegisterDateBegin.Date)+''' and '''+DateToStr(TJ_frmInputRegisterDate.dtpRegisterDateEnd.Date)+''' GROUP BY PhoneCode';
dmMain.dtsRegistStat.Active:=True;
 
大家还有什么好的建议吗?谢谢!
 
我不知道ACCESS是否支持Convert或To_Char函数?
如果支持,这样或许可以用上:
strSQL:=select * from tablename where convert(varchar(10),rq_filed,126)>=''';
strSQL:=strSQL+FormatDateTime('yyyy-MM-dd',dtpBeinDate.Date)+'''';
strSQL:=strSQL+' and convert(varchar(10),rq_field,126)<=''';
strSQL:=strSQL+FormatDateTime('yyyy-MM-dd',dtpEndDate.Date)+'''';
其中如果要查询某个月可以使用SubString(或SubStr)
如where substring(convert(10),rq_field,126),6,2)='''+MonthParameter+'''';
如果查询某年可以使用
where substring(convert(10),rq_field,126),1,4)='''+YearParameter+'''';
其中Convert就是把日期转换为一定的字符格式
126为2002-09-25这样的格式
还有其他的格式
 
哎,为什么非要用那种格式呢,yyyy-mm-dd这种格式多好
 
关键是我用的时候计算机一直提示什么数据格式非法!!晕了!
 
多人接受答案了。
 
后退
顶部