表test里有个字段“结束时间”,有两种格式:第一种格式:2012.03.28 18:30:00第二种格式:3 28 2012 6:30PM  或者如:3 28 2012 6:30AM
现在要求把表test里面的第二种格式转换为第一种格式,也就是一条update语句,该怎么写?求教高手大侠!注意:要求 6:30PM 或者 6:30AM 转换为 18:30:00 或者 06:30:00 ,注意最后面的 :00秒 也要添加上。

解决方案 »

  1.   

    convert
      

  2.   


    declare @str datetime
    set @str = '3 28 2012 6:30AM'select @str
    select convert(varchar(20),@str,120)/*********************-----------------------
    2012-03-28 06:30:00.000(1 行受影响)
    --------------------
    2012-03-28 06:30:00(1 行受影响)
      

  3.   


    declare @str datetime
    set @str = '3 28 2012 6:30AM'select convert(varchar(20),@str,120)
      

  4.   

    在楼上两位的提示下,我写了这条语句:UPDATE   test   SET 
          结束时间 = convert(varchar(20),结束时间,120)
     WHERE charindex('AM',结束时间)>0 or charindex('PM',结束时间)>0
    执行成功了,但是数据却没有改过来,咋回事呢?
      

  5.   


    UPDATE test SET  
      结束时间 = convert(varchar(20),结束时间,120)
     WHERE charindex('AM',结束时间)>0 or charindex('PM',结束时间)>0
      

  6.   


    create table tb(date datetime,strg varchar(100))
    insert into tb
    select '3 28 2012 6:30AM','3 28 2012 6:30AM'select * from tbupdate tb
    set date = convert(varchar(20),date,120),
    strg = convert(varchar(20),convert(datetime,strg),120)select * from tbdrop table tb/*************************date                    strg
    ----------------------- ----------------------------------------------------------------------------------------------------
    2012-03-28 06:30:00.000 3 28 2012 6:30AM(1 行受影响)date                    strg
    ----------------------- ----------------------------------------------------------------------------------------------------
    2012-03-28 06:30:00.000 2012-03-28 06:30:00(1 行受影响)
      

  7.   

    在大侠的提示下,写了这两条语句,解决问题了,谢谢大侠,结贴。
    语句一:
    UPDATE test SET 结束时间 = convert(varchar(20),convert(datetime,结束时间),120)
     WHERE charindex('AM',结束时间)>0 or charindex('PM',结束时间)>0语句二:
    update test set 结束时间=replace(结束时间,'-','.') where charindex('-',结束时间)>0