我现在要做一个时间格式的转换,原来的时间是字符格式的‘10JAN2008’,我现在要将他转换为2008-01-10
写了如下的语句
select convert(varchar(10),cast(left(SLIT_YMD,2)+' '+substring(SLIT_YMD,3,3)+' '+right(SLIT_YMD,4) as datetime),120) from T_JISSEKI_KAI
,这个语句在我的机器上能够执行,但到了服务器却会出问题,主要是
cast(left(SLIT_YMD,2)+' '+substring(SLIT_YMD,3,3)+' '+right(SLIT_YMD,4) as datetime)这个会出问题,说将字符转为日期格式时出错,我看了两台机器的sql版本和语言都一样,排序规则也一样,不知道为什么会出现这个错误,请问各位该如何解决阿?

解决方案 »

  1.   

    偶直接就用:select convert(datetime, '10JAN2008')得到了'2008-01-10 00:00:00.000'
      

  2.   

    你可以进一步:select convert(varchar(10), convert(datetime, '10JAN2008'), 120)得到'2008-01-10'
      

  3.   

    我的机子用select convert(datetime, '10JAN2008')也可以,但服务器不行啊
      

  4.   

    select convert(varchar(20),字段,120) from 表
      

  5.   

    一般都是用Convert函数后见面的第三个参数控制格式的
      

  6.   

    --不修改系统时间格式,试下这样行不
    --先替换月份
    update T_JISSEKI_KAI set SLIT_YMD = replace(SLIT_YMD,'JAN','01') --替换1月,其他月类似--再做转换
    select convert(varchar(10),cast(right(SLIT_YMD,4)+substring(SLIT_YMD,3,2)+left(SLIT_YMD,2) as datetime),120) 
    from T_JISSEKI_KAI
      

  7.   

    select  
    case(substring(SLIT_YMD,5,2)
    when 'JAN' then  left(SLIT_YMD,4)+'-01-'+right(SLIT_YMD,2)
    when 'May' then  left(SLIT_YMD,4)+'-05-'+right(SLIT_YMD,2)
    .
    .
    .
    from T_JISSEKI_KAI
      

  8.   

    wzy_love_sly服务器的语言跟我的机器一样啊,我看得是控制面板--〉区域和语言选项中的,对吧?