我的sql2000数据库中存储时间是这样存储的,如:2005-6-8 或1978-6-18 或1979-11-6,
由于填写身份证号码的需要,我需要把2005-6-8这种格式变成这样的一种标准字符串:‘20050608’然后再加前缀和后缀就可以组成身份证号码了,可是我如何把这种时间格式变成这种字符串呢?
还有对于那种老式身份证,我们只用到出生日期的后6位而已,如‘780618’,这种情况之下,我该怎么处理这个时间,然后得出两种如同'20050608'和'780618'之类的字符串呢?我用的是delphi+sql2000来编程,希望大家能帮帮忙!!!谢谢了

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     dt : TDateTime;
     s : string;
    begin
       s := '2006-5-3';
       dt := StrToDate(s);
       showmessage(FormatDateTime('yyyymmdd',dt));
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     dt : TDateTime;
     s : string;
    begin
       s := '2006-5-3';
       dt := StrToDate(s);
       showmessage(FormatDateTime('yymmdd',dt));
    end;
      

  3.   

    原理 : 使用formatdatetime
    第一个例子输出20050608这种形式的
    第二个例子输出050608这种形式的。
      

  4.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
      s,s1:string;
    begin
       s := FormatDateTime('yyyymmdd',DateTimePicker1.Date);     ///你要的格式
       s1 := copy(s,3,6);
                                                                 ///后6位
    end;
      

  5.   

    根据身份证号程度来判断是老的还是新的
    if length(s)=15 then //  formatdatetime
    if length(s)=18 then //  formatdatetime
      

  6.   

    set nocount on --节约反馈资源--'2006-07-21'->'20060721'
    select convert(varchar(10),cast('2006-07-21' as datetime),112)
    select convert(varchar(10),getdate(),112)
    --取得右边6位
    select right(convert(varchar(10),cast('2006-07-21' as datetime),112),6)
    select right(convert(varchar(10),getdate(),112),6)-----结果
               
    ---------- 
    20060721           
    ---------- 
    20060721           
    ---------- 
    060721           
    ---------- 
    060721
      

  7.   

    在程序里处理用Delphi的FormateDateTime函数
    如果用存储过程就用楼上的Sql Server转换函数