string类型的20090203这种格式的日期和202856这种格式的时间,该怎么转化成2009-02-03和20:28:56????

解决方案 »

  1.   

    转化的结果类型是要datetime还是string?
      

  2.   

    how about
    select to_char(to_date('20090203 202856','yyyymmdd hh24:mi:ss'),'yyyymmdd hh24:mi:ss') from dual
      

  3.   

    使用substring函数,分别取出年、月、日以及时、分、秒
    然后组合或是设置新定义一个datetime对象,并设置其年月日和时分秒
      

  4.   

    20090203 div 10000 得到年
    20090203 div 100,再 mod 100 得到月
    20090203 mod 100 得到日202856同理
      

  5.   

    谢谢我的方法是放在gettext函数里的,这个我没有说清楚 Text := FormatFloat('0000-00-00', Sender.AsFloat);
     Text := FormatFloat('00:00:00', Sender.AsFloat);
      

  6.   

        //theDate := '20090203';
        //theTime := '202856';
    var
        TDateTime dtA;
    begin
        strResult := copy(theDate,1,4) + '-' + copy(theDate,5,2) + '-' + copy(theDate,7,2) + char($20);   
        strResult := strResult+copy(theTime,1,2) + ':' + copy(theTime,3,2) + ':' + copy(theTime,5,2);
        dtA := strToDateTime(strResult);    //如果要返回字符串
        Result := DataTimeToStr(dtA);    //如果要返回的是DateTime
        Result := dtA;end;
      

  7.   

    直接用encodedate和encodeTime     var   d:Tdatetime;   
      begin   
        d:=encodedate(strtoint(copy(s,1,4)),strtoint(copy(s,5,2)),strtoint(copy(s,7,2)));   
        d:=d+   encodetime(strtoint(copy(s,9,2)),strtoint(copy(s,13,2)),strtoint(copy(s,15,2)),0);   
      end;     
      

  8.   

    ////////bdmh已经给出思路拉,呵呵,我细化,拿分
    var 
     s:string;
     i,j:integer;  
    begin
     i:=strtoint('20090203');
     j:=i div 10000;
     s:=inttostr(j)+'-';
     i:=i-j*10000;
     j:=i div 100;
     s:=s+inttostr(j) + '-';
     j:=i mod 100;
     s:=s+inttostr(j);
     showmessage(s); 
    end;
      

  9.   

    恩,还是
    FormatFloat比较方便,赞!