如数据集有一datetime型字段in_date,现如何定位2003年5月(2003-5)的记录?

解决方案 »

  1.   

    sqlserver中日期可以转化为字符串来比较,尚不清楚是否可以用
    like来操作
    还有一种方法不知对你是否可行:
    如果是5月那在sql中用>=2003-05-01 and <2003-06-01来实现。
      

  2.   

    我不是要在sql中实现我的ADOQuery数据集查询出的是全部数据,我现在是要用Locate函数看结果集里有没有某月的数据,如何实现?
      

  3.   

    另一函数:
    AStr:=FormatDateTime('yymmdd',in_date);
      

  4.   

    首先问一句:如果你需要模糊查询,那就不如果用locate方法解答代码:
    uses db;
    With AdoQuery1 do 
     begin 
           locate('time','2003-04-19',[]);//'2003-04-19'  就 是你的 查询条件,
           //[]中的 参数就指教察看 帮助 吧
     
     end;
    模糊查询:
    With AdoQuery1 do 
     begin
          close;
          sql.clear;
          sql.add ('select * from biao where time >:p1 and time <:p2');
          parameters.parambyname('p1').value :='2003-04-19';
          parameters.parambyname('p2').value :='2003-05-22';
          active :=true;
          open;
        
     end;//应该就 可以了,但是有一点 parameters.parambyname('p2')可能我拼写错误,:
      

  5.   

    xiaoyuer0851(小鱼儿0851):
    locate('time','2003-04-19',[]);能定位到'2003-04-19 12:30:00'这样的记录吗?time可是日期时间而不单单是时间
      

  6.   

    直接在ADOQUERY的SQL中定义多方便
      

  7.   

    这个你要现换成字符串,然后利用POS函数看匹配的字符可以实现从头匹配,部分匹配,和完全匹配
    Str:=‘2002-09-08’pos('2002',STR)如果反回是1代表从头匹配(年的),
                       pso('-09-',Str)实现月的模糊
                       
    这个我以前在[定位]的时候做过,楼主如果用字符串的指针就更快了。