declare @MonthsWage datetime
set @MonthsWage='2012-07-01'
declare @JiangXiangJinE  nvarchar(max)
select @JiangXiangJinE=coalesce(@JiangXiangJinE + ',' , 'update wage set ')  + en+'=b.'+en  from SystemDict where TableName='Awards'
set @JiangXiangJinE=@JiangXiangJinE+' from AwardsAmountSetting b where wage.PostID=b.PostID and MonthWage='''+@MonthsWage+''''
print @JiangXiangJinE--提示
Msg 241, Level 16, State 1, Line 2
从字符串向 datetime 转换时失败。

解决方案 »

  1.   

    and MonthWage='''+CONVERT(VARCHAR(20),@MonthsWage)+''''
      

  2.   

    declare @MonthsWage datetime
    set @MonthsWage='2012-07-01'
    declare @JiangXiangJinE  nvarchar(max)
    select @JiangXiangJinE=coalesce(@JiangXiangJinE + ',' , 'update wage set ')  + en+'=b.'+en  
         from SystemDict where TableName='Awards'
    set @JiangXiangJinE=@JiangXiangJinE+' from AwardsAmountSetting b where wage.PostID=b.PostID and MonthWage='''
       +convert(varchar(10),@MonthsWage,120)+''''
    print @JiangXiangJinE
      

  3.   

    你把 @MonthsWage 定义为字符串格式就可以了。
    declare @MonthsWage datetime
    set @MonthsWage='2012-07-01'
    print @MonthsWage 
    --这样输出的结果是:07  1 2012 12:00AM无法和你后边的数拼接,或者是用2楼方法,CONVERT(VARCHAR(20),@MonthsWage,120)
      

  4.   

    declare @MonthsWage datetime
    set @MonthsWage='2012-07-01'
    declare @JiangXiangJinE  nvarchar(max)
    select @JiangXiangJinE=coalesce(@JiangXiangJinE + ',' , 'update wage set ')  + en+'=b.'+en  from SystemDict where TableName='Awards'
    set @JiangXiangJinE=@JiangXiangJinE+' from AwardsAmountSetting b where wage.PostID=b.PostID and 
    MonthWage='''convert(varchar(10),@MonthsWage,120)'''' --这里修改不行? 
    print @JiangXiangJinE
    -->那你这个MonthWage字段是什么类型,字段值是什么样的
    -->确认是否是这句出现错误
    -->如果不能确认,给出表结构和错误附近的代码
      

  5.   

    declare @MonthsWage datetime
    set @MonthsWage='2012-07-01'
    declare @JiangXiangJinE  nvarchar(max)
    select @JiangXiangJinE=coalesce(@JiangXiangJinE + ',' , 'update wage set ')  + en+'=b.'+en  from SystemDict where TableName='Awards'
    set @JiangXiangJinE=@JiangXiangJinE+' from AwardsAmountSetting b where wage.PostID=b.PostID and convert(varchar(10),MonthWage,21)='''+cast(@MonthsWage as varchar)+''''
    print @JiangXiangJinE