利用DATEDIFF ( datepart , startdate , enddate )可以

解决方案 »

  1.   

    可以参考
    datediff和datepart这两个函数
      

  2.   


    DATEDIFF
    返回跨两个指定日期的日期和时间边界数。 语法
    DATEDIFF ( datepart , startdate , enddate ) 
    例如:求今年2月份有多少天
    1.
    declare @t smalldatetime
    select @t='2003-2-01'
    select datediff(day,@t,dateadd(Month,1,@t)) as 该月有2.
    select day(dateadd(day,-1,dateadd(mm,1,'20030201')))
      

  3.   

    下面这个函数就可以了
    CREATE   FUNCTION 返回月天数(@YY CHAR(4), @MM CHAR(2))
    RETURNS INT
    AS
    BEGIN
      DECLARE @Riqi DATETIME,@I INT 
      SET @MM=CONVERT(CHAR(2),CONVERT(INT,@MM)+1)
      SET @Riqi = dateadd(day,-1,CONVERT(DATETIME,@YY+'-'+@MM+'-01'))
      SET @I =CAST(datepart(day,@Riqi) AS INT)
      return @I
    END
    调用例子:
    select dbo.返回月天数('2003','8')       结果31
    select dbo.返回月天数('2003','2')       结果28