各位大侠:
   我现在有秒数31200,我希望把它写到数据库的datetime类型字段中成为2010-1-27 8:40:00,其中2010-1-27 为系统日期,谢谢了!

解决方案 »

  1.   

    delphi的tdatetime就是一个double型,它的单位为天,一天为86400S,所以可以这样
    var
      t:tdatetime;
    begin
      t:=EncodeDate(2010,1,1)+31200/86400;
      Edit1.Text:=FormatdateTime('yyyy.mm.dd hh:mm:ss',t);
    end;
      

  2.   

    keiy再帮忙看看,怎么用FormatdateTime('yyyy.mm.dd hh:mm:ss',t);看到的和写到数据库中的不一样呀
    通过Edit1.Text:=FormatdateTime('yyyy.mm.dd hh:mm:ss',t); 看到的是2010.1.27 08:40:00
    而写到数据库中变成了2010-1-29 00:00:00
    函数如下
    function TimeChange(t:integer;a:integer):TDateTime;//把时间格式转换为数据库中的类型
    var
     r:TDateTime;
     i:integer;
     temp:double;
    begin
      i:=0;
      temp:=0;
      if a=1 then
        i:=t+43200
       else
        i:=t;
        r:=EncodeDate(2010,1,27)+i/86400;
        result:=r;
    end;
    显示调用如下:
    procedure TSDIAppForm.Button1Click(Sender: TObject);
    var
     t:TdateTime;
    begin
     t:=TimeChange(31200,0);
     Edit1.Text:=FormatdateTime('yyyy.mm.dd hh:mm:ss',t);
    end;
    数据库调用如下
    ADOStoredProc.Parameters.CreateParameter('Time',ftInteger,pdInput,4,TimeChange(31200,0));
    麻烦了,谢谢!
      

  3.   

    ADOStoredProc.Parameters.CreateParameter('Time',ftInteger,pdInput,4,TimeChange(31200,0)); 
    TDateTime是浮點型的,你的參數是ftInteger,轉成整型當然不對了,這里要用ftFloat或ftDateTime
      

  4.   

    上面的问题ok了,不好意思再问下
    r:=Now+i/86400;返回的当前日期(包括时分秒)+时间i
    我现在想要当天0时+时间i,请问怎么处理,谢谢!
      

  5.   

    谢谢了,改成r:=(Now-time)+i/86400;就ok了