declare @date nvarchar(8)
declare @year nvarchar(4)
declare @month nvarchar(2)
set @year=year(getdate())
set @month=month(getdate())
set @date=@year+'-'+@month
select @date输出结果:2005-11

解决方案 »

  1.   

    改为2005-3就不是smalldatetime类型了
      

  2.   

    smalldatetime类型字段,难道你想在SQL里面,打开表显示为 2005-3  那是不可以的,与字段类型不匹配 
    只有在界面上显示时 先取出时间字符串 再substring 或者在SQL语句里面Substring再显示在界面
      

  3.   

    请问在查询分析器中
    update query_sh set 出货日期=year(出货日期) & '-' & month(出货日期)这种写法不对啊,请问大家应该怎么写???
      

  4.   

    在smalldate列中,不是smalldate的数据肯定保存不了。
    你可以直接保存出货日期,以后要用时忽略日就可以嘛!
    update query_sh set 出货日期=出货日期
    可以这样使用:
    select convert(varchar(7),出货日期,120) from query_sh
      

  5.   

    楼主2005-3不是smalldatetime类型.全换成2005-3-1这样差不多.或则换到字符型
      

  6.   

    declare @date smalldatetime
    set @date='2005-03-25'
    select cast(year(@date)as varchar)+'-'+cast(month(@date)as varchar)/*
    2005-3(所影响的行数为 1 行)
    */
      

  7.   

    请问在查询分析器中
    update query_sh set 出货日期=year(出货日期) & '-' & month(出货日期)这种写法不对啊,请问大家应该怎么写???是这样的,我把出货日期由smalldatetime类型改为varchar类型了
    2005-3-6则显示为Mar 6 2005 12:00AM
    所以我在查询分析器里写update query_sh set 出货日期=year(出货日期) & '-' & month(出货日期),想把他们更新成2005-3,可是不对啊。
      

  8.   

    先备份好这个表的数据,给你一个笨办法:
    update query_sh set 出货日期=substring(出货日期,7,4)+'-'+case 出货日期 when 'Jan' then '1' when 'Feb' then 2 when 'Mar' then 2 end
      

  9.   

    --规律
    --将第7-11五个字符转换为数字,再转换为字符型作为年
    --将第5、6两个字符转换为数字,再转换为字符型作为月create table query_sh(出货日期 varchar(20))
    insert into query_sh
    select 'Mar 6 2005 12:00AM'union all
    select 'Mar 7 2005 12:00AM'union all
    select 'Mar 8 2005 12:00AM'union all
    select 'Mar 9 2005 12:00AM'union all
    select 'Mar 10 2005 12:00AM'update query_sh
    set 出货日期=cast(cast(substring(出货日期,7,5)as int)as varchar)+'-'+cast(cast(substring(出货日期,5,2)as int)as varchar)select * from query_shdrop table query_sh
    /*
    出货日期                 
    -------------------- 
    2005-6
    2005-7
    2005-8
    2005-9
    2005-10(所影响的行数为 5 行)
    */
      

  10.   

    先增加一個臨時欄位T1,類型為VARCHAR
    update query_sh set T1=convert(varchar(7),出货日期,120)
    再把出貨日期欄位刪掉,T1再改成出貨日期就可以了,以后也趕接用VARCHAR型
      

  11.   

    select datename(year,'2005-3-6')+datename(month,'2005-3-6')