想请教一下关于自定义函数编写的问题,因为第一次用,希望大家多帮助,谢谢
需求概述:有一张表allag,里面有个日期字段zhuanzheng,但是这个字段是字符型的,形式是这样:20040623,varchar(8)。现在要通过这个日期来计算月份,就是随便输入一个zhuanzheng字段里的字符,可以计算出到现在(也就是getdate())为止一共有几个月。里面有两个问题,一个是日期型的getdate()和字符型的archar(8)怎么计算,再就是这个自定义函数该怎么写比较好,谢谢。

解决方案 »

  1.   

    datediff(mm,convert(zhuanzheng as datetime),getdate())
      

  2.   

    select datediff(mm,cast(zhuanzheng as datetime), getdate()) from allag
      

  3.   

    只要是标准日期格式组织的字符串,SQL会自己转成datetime类型(例如20070629)
    select datediff(mm,zhuanzheng, getdate()) from allag
      

  4.   

    create function fn(@d varchar(8))
    returns int
    as
    begin
    declare @m int
    set @m = datediff(mm,cast(@d as datetime),getdate())
    return @m
    end
    goselect dbo.fn('20070501')drop function fn