自己写了一个函数,
函数的简化版是:
CREATE FUNCTION TestNum(
@date_begin varchar  --计算的开始时间
)RETURNS float
AS
BEGIN
DECLARE @testnum float
SELECT @testnum = datediff(d,@date_begin,start_day) from JobNeedRes
RETURN(@testnum)
END用select resmodel_code,resmodel_name,dbo.TestNum('2008-05-01') from JobNeedRes
调用的时候老是提示我 :从字符串转换为 datetime 时发生语法错误。
但是直接用select resmodel_code,resmodel_name,datediff(dd,'2008-05-01',start_day) from JobNeedRes时结果却是正确的表JobNeedRes种的start_day字段我用的varchar型
大家帮我看看是那里的问题,先谢了!

解决方案 »

  1.   

    datediff(d,@date_begin,start_day)
    这个时候把@date_begin 转成日期格式.
      

  2.   

    --trydatediff(d,cast(@date_begin as datetime),start_day) 
      

  3.   

    @date_begin 改为 datetime 试试
      

  4.   

     
    @date_begin varchar  --计算的开始时间
    -->@date_begin varchar(100)  --计算的开始时间
      

  5.   

    @date_begin varchar  --计算的开始时间
    -->@date_begin varchar(100)  --计算的开始时间
      

  6.   

    @date_begin varchar(30)  --计算的开始时间