如题,我的数据中存在 2011-02,20110201 等但是我想让它变成2011-02-01 怎么弄啊。。谢谢了

解决方案 »

  1.   


    select convert(varchar(10),convert(datetime,'20110201'),120)
      

  2.   

    select convert(varchar(10),cast('20110201' as datetime),120)/*----------
    2011-02-01(1 行受影响)
      

  3.   

    无规则是不行的,至少你的格式是统一的比如,2011-02先变成2011-02-01再转化成datetime
    20110201直接转化成datetime
      

  4.   

    select convert(varchar(10),cast((case when len(replace([date],'-',''))=8 then [DATEADD] 
                       else replace([date],'-','')+'01') as datetime),120)
    from tb                   
      

  5.   


    declare @tb table (shijian varchar(20))
    insert into @tb(shijian)
    select '2010-02' union all
    select '20100201' union all
    select '2010-01' union all
    select '2010-03' union all
    select '20100101' union all
    select '20100301'
    select convert(varchar(20),convert(datetime,substring(REPLACE(shijian,'-','')+'01',0,9)),23) AS shijian from @tb
    ------------------------------------------------------
    shijian
    --------------------
    2010-02-01
    2010-02-01
    2010-01-01
    2010-03-01
    2010-01-01
    2010-03-01
    (6 行受影响)
      

  6.   

    那把你所有的都列举一样  用case ...when