看不懂的获取当月天数语句
看不懂的获取当月天数语句
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,即下个月的第一天----
------------------在此日期上减去一天,即上个月的最后一天-----------
--------------------------------取出本月的天数---------------------------------