declare @s varchar(14)
set @s = '2000年1月3日'
set @s = replace(@s, '年', '-')
set @s = replace(@s, '月', '-')
set @s = replace(@s, '日', '')
select convert(varchar(10), cast(@s as datetime), 112)

解决方案 »

  1.   

    declare @d varchar(20)
    set @d='2000年11月13日'
    select convert(char(10),cast(replace(replace(replace(@d,'年','-'),'月','-'),'日','') as datetime),120)
      

  2.   

    to libin_ftsafe(子陌红尘) 
    convert最后一个参数要是112才满足lz的要求
      

  3.   

    declare @s varchar(14)
    set @s = '2000年1月3日'
    set @s = replace(@s, '年', '-')
    set @s = replace(@s, '月', '-')
    set @s = replace(@s, '日', '')
    select convert(varchar(8), cast(@s as datetime), 112)
      

  4.   

    declare @dt varchar(800)set @dt='2000年1月3日'select convert(varchar(10),cast(replace(replace(replace(@dt,'年','-'),'月','-'),'日','') as datetime),112)
      

  5.   

    update 表
    set 字段= convert(varchar(8), cast(字段 as datetime), 112)
      

  6.   

    select convert(varchar(8),cast(replace(replace(replace(字段名,'年','-'),'月','-'),'日','') as datetime),112) as 字段名
    from 表名
      

  7.   

    服务器: 消息 241,级别 16,状态 1,行 1
    从字符串转换为 datetime 时发生语法错误。
    但是出错了
    update [zl] set PUBNR =convert(varchar(8),cast(replace(replace(replace(PUBNR,'年','-'),'月','-'),'日','') as datetime),112)
      

  8.   

    可能是你的数据不都是“2000年1月3日”的格式,update没有问题
    if object_id('zl') is not null drop table zl
    select '2000年11月13日' as PUBNR
    into zl 
    union select '2000年1月13日'
    union select '2000年11月3日'update [zl] set PUBNR = convert(varchar(8),cast(replace(replace(replace(PUBNR,'年','-'),'月','-'),'日','') as datetime),112)select * from zl
    /*
      PUBNR
    20001113
    20001103
    20000113
    */
    drop table zl