declare @str varchar(20)
set @str='050921123525'
select '20'+left(@str,2)+'-'+    --年
       substring(@str,3,2)+'-'+      --月
       substring(@str,5,2)+' '+     --日
       substring(@str,7,2)+':'+      --小时
       substring(@str,9,2)+':'+      --分钟
       substring(@str,11,2)          --秒/*
------------------------------- 
2005-09-21 12:35:25(所影响的行数为 1 行)
*/

解决方案 »

  1.   

    declare @str varchar(40)
    set @str='050921123525'
    select 
    dateadd(ss,cast(substring(@str,11,2)as int),
    dateadd(mi,cast(substring(@str,9,2)as int),
    dateadd(hh,cast(substring(@str,7,2)as int),
    cast(left(@str,6) as datetime))))
    /*
                                                           
    ------------------------------------------------------ 
    2005-09-21 12:35:25.000(所影响的行数为 1 行)
    */
      

  2.   

    declare @str varchar(20)
    set @str='050921123525'
    SELECT cast(stuff(stuff(stuff(@str,7,0,' '),10,0,':'),13,0,':') as datetime)-- 结果: 2005-09-21 12:35:25.000
      

  3.   

    declare @str varchar(20)
    set @str='050921123525'
    SELECT cast(stuff(stuff(stuff(@str,7,0,' '),10,0,':'),13,0,':') as datetime)