ACCESS数据库,其中的一个表单中有一个RZRI(发证日期)的字段,此字段为“文本”,但其中保存的是一个日期格式的数据(如:2005-09-26 13:30:30)。在FORM中是通过一个DATETIMEPICK的DATETIME值对它进行付值的。
ADOQuery1.FieldValus['FZRQ'] := DateTimeToStr(DateTimePick.dateTime);
可是现在在做查询的时候,不知道对它怎么操作了?
说明:保存的数据必须为文本格式!
请高手指点呀!先谢谢了!

解决方案 »

  1.   

    s:string;s:='2005-09-26 13:30:30';
    s:=datetimetostr(strtodatetime(s));select FZRQ from table where FZRQ=s
      

  2.   

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sql.clear;
    tempstr:='select * from wxxxtb where 日期=:temp1';
    SQL.Add(tempstr);
    Parameters.ParamByName('temp1').Value:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.DateTime);
    Open;
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    参照////
      

  3.   

    不要用datetimetostr,用formatdatetime('yyyy-mm-dd hh:mm:ss',Adate)格式化日期﹐查詢時就方便了,用like就可以方便的查一天﹑一個月的數據了
      

  4.   

    保存:
    insert into table (...,RZRI,...)values(..., +'''formatdatetime('yyyy-mm-dd',DateTimePicker1.datetime)'''+ ,...)查询:
     select * from table where RZRI<='''+formatdatetime('yyyy-mm-dd',DateTimePicker1.datetime)+'''
      

  5.   

    SQL中日期型字段的查询技巧:    在SQL中查询时,对于日期型字段有特殊的表示方法,否则查询中会出现错误。比如下面的语句: select * from  DEMO where PPDate = 25/07/1999   上面这个查询语句在执行时就会出现错误,因为PPDate = 25/07/1999这个表达式不正确。正确的写法是:select * from  DEMO where PPDate = #25/07/1999#,如果在查询语句中使用日期型变量,比如:     select * from  DEMO where  PPDate = :MyDate那么,事先对MyDate这个变量做日期类型定义是很必要的,否则在以后的参数传递中也会出现问题。单击Query组件Params属性后的省略号,打开参数编辑对话框,选择“MyDate”这个参数,在左边的Object inspector窗口中,此参数有一个DataType属性,从中选择ftDate型即可。在中文WIN9X中,SQL语句中日期类型的常数只能为:“年—月—日”和“月—日—年”这两种格式请参照如下代码:
    text1 :='select barcode from Final_main where date_time=:Sdate';
    SQL.Add(text1);
    Parameters[0].Value :=DateTimeToStr(DateTimePicker_Sdate_F.DateTime);
    Open;
      

  6.   

    对不起,我可能没有把问题说清楚!
    现在关键的问题是,在数据库表中保存的“FZRQ”的数据是文本形式的,string
    但我现在要实现的查询是: date1 <= FZRQ <= date2(说明意思用表达式),其中date1,date2为DATETIME形。
    不知道怎么做了!
      

  7.   

    用between应该行
    select barcode from Final_main where FZRQ between date1 and date2;
      

  8.   

    ADODataSet1.close;
    ADODataSet1.CommandText:='Select * from 表名 Where FZRQ Between '+Quotedstr(DateTimePick1.Text)+' and '+Quotedstr(DateTimePick2.Text);
    ADODataSet1.Open;
      

  9.   

    根本没有必要那么罗嗦就这么简单ADOQuery1.SQL.Add('SELECT * FROM 表 WHERE DATEVALUE(FZRQ)=#'+DateTimeToStr(DateTimePick.DateTime)+'#');
    以上为查询日期等于DateTimePick.DateTime的数据ADOQuery1.SQL.Add('SELECT * FROM 表 WHERE DATEVALUE(FZRQ) BETWEEN #'+DateTimeToStr(DateTimePick1.DateTime)+'# AND #'+DateTimeToStr(DateTimePick2.DateTime)+'#');
    查询日期在DateTimePick1和DateTimePick2之间的数据反正核心有二
    1、通过DATEVALUE函数将ACCESS的字符日期转换为日期进行查询
    2、ACCESS的日期通过##包括字符表示日期,SQL语句也这么传递以上只能用于ACCESS数据库,SQL SERVER数据库反而简单
      

  10.   

    法二:Access
       ADOQuery1.Close;
       ADOQuery1.SQL.Add('select * from tb1 where Tdate=:v1');
       //ADOQuery1.Parameters.ParamByName('v1').value:=FormatdateTime('yyyy-mm-dd',strtodate(Edit1.text)); 
       ADOQuery1.Parameters.ParamByName('v1').value:=FormatdateTime('yyyy-mm-dd',DateTimePicker1.date);
       ADOQuery1.Prepared;
       ADOQuery1.Open;