你好,请教各位,我现在使用的是ACCESS数据库,用了ADOQUERY来查询,我想把一些数据按照 :日期 时间 数值 这样来保存,
我保存的时候,我试了下,在ACCESS字段选择时间/日期,在delphi中用insert添加NOW()的话,
数据库显示的格式是:2008-11-22 11:57:02  时间跟日期是在一起的啊
如果我想按照时间和日期来查询,比如查询2008年11月22日0点到2008年11月23日4点的数值,是按照我这样用一个字段,记录了now()方便,还是分开时间跟日期两个字段,再查询方便啊,不知具体的做法要怎样呢,查询都是在同一个表内的,谢谢

解决方案 »

  1.   

    其实两者都行,如果分开存的话,取当前日期用date,当前时间用time
      

  2.   

    一个字段就行了,分开更麻烦,而且浪费资源
    如果分开,insert时你要用formatdatatime('yyyy-mm-dd',now())来取日期,再取时间,处理也麻烦
      

  3.   

    ACCESS的日期不是用引用括起來的
     select * from table where date > #2008-10-23 10:20:00#    要用#號
      

  4.   

    谢谢大家的回答,如果要一个字段保存的话,要怎样写SQL语句啊?不是很懂怎样去查询啊,
    比如查询2008年11月22日0点到2008年11月23日4点的数值SQL语句要怎样写啊?
    我是想用两个MonthCalendar选择日期,用两个DateTimePicker来选择时间啊,一组是开始日期、时间,一组是结束日期、时间谢谢
      

  5.   

      qTemp.Close;
      qTemp.SQL.Clear;
      qTemp.SQL.Add('select * from Table where fDate>=:a and fDate<=:b ');
      qTemp.Parameters.ParamByName('a').value:=MonthCalendar1.Text + ' ' + DateTimePicker1.text;
      qTemp.Parameters.ParamByName('b').value:=MonthCalendar2.Text + ' ' + DateTimePicker2.text;
      qTemp.Open;
      

  6.   

    谢谢大家的回答啊,已经搞定了啊,用了4个DateTimePicker 就可以了,谢谢
    不过还有点问题想大家指教下啊
    现在我已经可以根据起始的日期时间和结束的日期时间查找到了数据库的内容,但是我想在里面加个间隔进去要怎样做啊?
    举一个例子:  比如我查找2008-12-1 0:0:0: 到 2008-12-10 0:0:0:的数据,那样所有的数据都会查找出来了(比如一天会记录24条数据,那样10天就会有240条数据出来了),但是我现在只需要每天的0时0点0分这一条数据就可以了,就是想查找出来只有10条记录,一天一条,不知这样间隔的查询要怎样实现呢?不知说得明白不明白,还请指教指教  
      

  7.   

    你好,谢谢你们的回答啊,我的这个00:00:00是举例而已,我是想通过一个edit来输入这个间隔,
    查询从开始时间 到结束的时间这段时间段内,每隔EDIT(可以是小时/分/妙)的数据啊,谢谢
      

  8.   

    t1 := formatdatetime('yyyy-MM-dd',datetimepicker1.Date) + ' 00:00:00.001';
    t2 := formatdatetime('yyyy-MM-dd',datetimepicker2.Date) + ' 23:59:59.999';qTemp.SQL.Text := format('select ... from ... where ... and 时间 between %s and %s',[t1,t2]);注意一点,要判断两个日期控件的日期值, between 小时间 and 大时间
      

  9.   

    谢谢大家的回答啊,我通过下面这样做已经可以查询时间段内的时间了,
    procedure TFrm_RD.Button3Click(Sender: TObject);
    begin
    date1.Time :=time1.Time;
    date2.Time :=time2.Time;
    with DataModule.Frm_DM.ADOQuery2 do
      begin
        close;
        sql.Clear;
        sql.Add('Select * From table_Day where 监测时间 >= :A and 监测时间 <= :B');
        parameters.ParamByName('A').Value:=Date1.DateTime;
        parameters.ParamByName('b').Value:=Date2.DateTime;
        open;
        RC_LB.Caption:=inttostr(RecordCount);
      end;
    end;
    但是现在我想要在查询出来的结果那里挑选一部分记录出来,并不是全部都返回啊,这些记录的时间是每隔一定时间的(比如多少时或者分或者秒),
    还想请大家指教指教,谢谢