SELECT @maxd = max(xfrq), @mind=min(xfrq) FROM cr_hyda 
应该是这句问题
你这个xfrq字段(若是DATETIME类型时)应该有NULL,所以在下面转换时就会出错

解决方案 »

  1.   

    一个先将数据库的时间字段先转化格式。
    convert(varchar(10),getdate(),120)
    在调入 exec R_PRO '2005-01-01','2008-01-01'
    就行了。
      

  2.   

    我刚刚把表中xfrq字段全部填写了日期,无NULL还是报相同错误
      

  3.   

    Create PROC [dbo].[RFM_R_PRO] 
    @mind datetime, 
    @maxd datetime, 
    @interval int 
    AS 
    --SELECT @maxd = max(xfrq), @mind=min(xfrq) FROM cr_hyda  想问下,你不是已经定义参数了嘛?这句是什么意思?
    set @interval=datediff(ss, @mind, @maxd)/5 update cr_hyda set r = a.sc from 
    (select hyid, (case 
        when xfrq between cast(@mind as varchar)  and cast(dateadd(ss, @interval, @mind) as varchar) then 1 
        when xfrq between  cast(dateadd(ss, @interval, @mind) as varchar) and cast(dateadd(ss, 2*@interval, @mind) as varchar)  then 2 
        when xfrq between  cast(dateadd(ss, 2*@interval, @mind) as varchar) and  cast(dateadd(ss, 3*@interval, @mind) as varchar) then 3 
        when xfrq between  cast(dateadd(ss, 3*@interval, @mind) as varchar) and  cast(dateadd(ss, 4*@interval, @mind) as varchar) then 4 
        when xfrq between  cast(dateadd(ss, 4*@interval, @mind) as varchar) and   cast(@maxd as varchar) then 5 
    end) as sc from cr_hyda) as a 
    where cr_hyda.hyid = a.hyid