我有一个ACCESS数据表,运行了一段时间,里面一个时间字段出问题了,本来是
2003-10-2 12:22:10 的值变成了 2010-2-3 12:22:10 ,后面的小时间没变,就是前面的年月日变了,月跑到年的后半段,年的后半段跑到日,日又变为月了,我现在想写个程序再把它们全部纠正过来,请各位给个方法,我菜鸟一个请各位帮忙!急!

解决方案 »

  1.   

    碰到过,但是不知道解决方法。
    我是在MSSQL中碰到的。给你参考,我当时的作法是:
    我用UPDATE语句把所有的日期清空了,
    再把日期填正确的。日期变形的时候,DELPHI的数据敏感控件无法显示出来,只能用ASSCESS或MSSQL
    等数据里能看出来,但是无法定位到那条记录的。
      

  2.   

    我认为有规律就好办!这样给一个思路!前提表里应有唯一的字段,用它一个一个把时间取出来!用Copy去取月,再调整,写加表!
      

  3.   

    在delphi中用decdoedatetime;和encodedatetime两个函数将时间值取出来处理后再更新回去应该会快些;
      

  4.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      i: integer;
      fd: string;
    begin  with ADODataSet1 do
      begin
        for i:=1 to 2000 do
        begin
          close;
          commandtext :='select * from userhistory where id=:id ';
          Parameters.ParamValues['id'] :=i;
          open;      if copy(trim(fieldbyname('endtime').AsString),1,4) = '2010' then
          begin
            fd :='2003'+'-10'+'-'+copy(trim(fieldbyname('endtime').AsString),6,1) +' '+copy(trim(fieldbyname('endtime').AsString),10,8);
            close;
            commandtext :='update userhistory set endtime=:endtime where id=:id';
            Parameters.ParamValues['endtime'] :=fd;
            Parameters.ParamValues['id'] :=i;
            open;
          end;
        end;
      end;
    end;