下面这个函数就可以了 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
datediff和datepart这两个函数
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')))
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