select 当月天数=day(dateadd(month,1,getdate()-day(getdate())+1)-1)

解决方案 »

  1.   

    print datediff(dd,'2004-02-01','2004-03-01')用这个月的第一天,和下个月的第一天比较就可以了
      

  2.   

    select 当月天数=datediff(day,getdate(),dateadd(month,1,getdate()))
      

  3.   

    select 当月天数=datediff(day,getdate(),dateadd(month,1,getdate()))SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) as 当天的半夜
    SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) as 季度的第一天
    SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) as 一年的第一天
    SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) as 本周的星期一
    SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) as 一个月的第一天
    SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) as 上个月的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) as 去年的最后一天SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) as 本月的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0)) as 本年的最后一天
    select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())   
                                                     ), 0) as 本月的第一个星期一
      

  4.   

    to: huwgao(小楼听雨) , mymaily2h(sun) 
    你们的都不严谨下面是运行结果当天                                                     当月天数        
    ------------------------------------------------- ----------- 
    2004-01-31 11:36:10.920                                29(所影响的行数为 1 行
      

  5.   

    你们的解决不了上月天数比本月天数多的问题.
     
    zjcxc(邹建) 的不仅可以解决这个,而且可以解决上月天数比本月少的情况.
      

  6.   

    不会把。--举例
    select top 12 identity(int,1,1)m into #t from syscolumns
    select 时间='2004-'+cast(m as varchar(2))
    ,当月天数=datediff(day,'2004-'+cast(m as varchar(2))+'-1',dateadd(month,1,'2004-'+cast(m as varchar(2))+'-1'))
    from #t
    drop table #t--返回(所影响的行数为 12 行)时间      当月天数        
    ------- ----------- 
    2004-1  31
    2004-2  29
    2004-3  31
    2004-4  30
    2004-5  31
    2004-6  30
    2004-7  31
    2004-8  31
    2004-9  30
    2004-10 31
    2004-11 30
    2004-12 31
      

  7.   

    to徐:
    就是说1月31号当天用
    select 当月天数=datediff(day,getdate(),dateadd(month,1,getdate()))
    取的数据不对。