我用的是oracle数据库,其中表中的某一字段是日期型
现在根据datetimepick中的日期来实现查询,只考虑年份和月份。如:datetimepick中是:2004年5月4日
则在数据库中查询出五月份的所有记录。我在基础类中有200分的问题!加上这30是230分!

解决方案 »

  1.   

    var
    t_year,t_month,t_day:pchar     //分别为:年,月,日
    begin
    DecodeDate(Now,t_year,t_hour,t_day);//分离出了年,月,日
    query1.sql.clear;
    query1.sql.text:='select * from table where time>='+''''+t_year+''''+'-'+''''+t_month+''''+'-'+'1'
    query1.open;
    end;
      

  2.   

    query.sql.add('select * from table where to_char(date,''yyyymm'')=:date');
    parambyname('date').asstring := formatdatetime('yyyymm',datetimepick.datetime);
      

  3.   

    现在根据datetimepick中的日期来实现查询,只考虑年份和月份。如:datetimepick中是:2004年5月4日
    则在数据库中查询出五月份的所有记录。
    //?? 是按照月份 还是按照 年+月份??var 
      strdate:string;strdate := dateToStr(datetimepicker1.date);
    // 需要考虑到你本地的日期格式 如长格式YYYY-MM-DD 短格式 YYYY-M-D
    // 先暂定你的日期格式为长格式 关于日期格式的获取我可以给你代码
    strdate := copy(strdate, 6,2) // 月份// 下面是按照月份进行
    AdoQry.SQL.Text := 
     'select * from yuortable 
    where substr(to_char(youdate,'yyyy-mm-dd'), 6,2) = ''' + strdate + '''';
    // 如果按照年+月
    strdate := copy(strdate, 1,7) 
    where substr(to_char(youdate,'yyyy-mm-dd'), 1,7)= ''' + strdate + '''';你试试.
      

  4.   

    beyondtkl(大龙驹<逝追.弗瑞德>) 
    谢谢你,给分