declare @iDays int declare @dt varchar(50) set @dt=@Year+'-'+@Month+'-01' select @iDays=day(dateadd(d,-Day(dateadd(m,1,convert(datetime,@dt))),dateadd(m,1,convert(datetime,@dt)))) 就是这个月的最后一天,既下个月1号,在“天”上减1
declare @imonth int declare @sdate varchar(10) set @imonth=5 select @sdate='2008-'+cast(@imonth as varchar)+'-1' select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(@sdate as datetime))))
create function dbo.get_month_days(@y integer ,@m integer) returns integer as begin declare @days integer if @y is null or @m is NULL set @days=0 else if (@y%4=0 and @y%100<>0) and @m=2 set @days=29 else begin if @m in(1,3,5,7,8,10,12) set @days=31 else if @m in(4,6,9,11) set @days=30 else set @days=28 end return @days end go declare @d integer select @d=dbo.get_month_days(2008,7) --@d=31
declare @stMonth NVARCHAR(2)
set @stYear ='2008'
set @stMonth ='7'DECLARE @date smalldatetime
SET @date = @stYear + '-'+ @stMonth + '-'+ '1'SELECT 32-DAY(@date+(32-DAY(@date)))
declare @stYear NVARCHAR(4)
declare @stMonth NVARCHAR(2) DECLARE @stDay int select @stYear=datepart(yy,getdate())
select @stMonth=datepart(mm,getdate())
select @stDay=datepart(dd,getdate())
select 年=@stYear,月=@stMonth,日=@stDay
declare @dt varchar(50)
set @dt=@Year+'-'+@Month+'-01'
select @iDays=day(dateadd(d,-Day(dateadd(m,1,convert(datetime,@dt))),dateadd(m,1,convert(datetime,@dt))))
就是这个月的最后一天,既下个月1号,在“天”上减1
declare @imonth int
declare @sdate varchar(10)
set @imonth=5
select @sdate='2008-'+cast(@imonth as varchar)+'-1'
select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(@sdate as datetime))))
returns integer
as
begin
declare @days integer
if @y is null or @m is NULL
set @days=0
else
if (@y%4=0 and @y%100<>0) and @m=2
set @days=29
else
begin
if @m in(1,3,5,7,8,10,12)
set @days=31
else
if @m in(4,6,9,11)
set @days=30
else
set @days=28
end return @days
end
go
declare @d integer
select @d=dbo.get_month_days(2008,7)
--@d=31