日期:2014-05-18  浏览次数:20467 次

看不懂的获取当月天数语句
看不懂的获取当月天数语句
select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)
+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))
可正确运行,但是我看不懂,哪位可解释一下,

------解决方案--------------------
先生成当月第一天然后加一个月减一天就等于当月的最后一天呀

datepart(dd,当月最后一天的日期 ) 这不就是一个月的总天数
------解决方案--------------------
select 
datepart(dd,
dateadd(dd,-1,
dateadd(mm,1,
cast(cast(year(getdate()) as varchar) + '-' + cast(month(getdate()) as varchar) + '-01' as datetime)
)
)


=============取当月1号======比如2008-07-01===========
cast(cast(year(getdate()) as varchar) + '-' + cast(month(getdate()) as varchar) + '-01' as datetime

============dateadd(mm,1,'2008-07-01') 下一月(2008-08-01)======

============dateadd(dd,1,'2008-08-01') 这个月(2008-07-31)======

============datepart(dd,'2008-07-31') 取天31, 那也就是本月天数=======

------解决方案--------------------
SQL code

select datepart(d,dateadd(d,-1,convert(char(8),dateadd(month,1,getdate()),120)+'01'))
                                               ---当前月份加1,即下个月) -    
                               -------------取出年月,再加上01,即下个月的第一天----
                  ------------------在此日期上减去一天,即上个月的最后一天-----------
       --------------------------------取出本月的天数---------------------------------