@stYear NVARCHAR(4)
@stMonth NVARCHAR(2)DECLARE @stDay int
我想取得天数.怎样通过年月得到天数呢.看F1试了半天都不行,请高手提示,谢谢

解决方案 »

  1.   

    declare @stYear NVARCHAR(4) 
    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)))
      

  2.   


    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
      

  3.   

    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
      

  4.   


    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))))
      

  5.   

    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