最近做的数据ETL经常需要计算给定日期的月份第一天或者是最后一天之类的问题。Sql server提供了类似DateAdd, Datepart 以及DateDiff 之类的函数供使用。为了方便以后在遇到类似的需求,在这里做个记录,方便自己查找。
First day of month:
select dateadd(day,1-DATEPART(day,getdate()),getdate())
思路: 获取当前日期的天数,然后用现在的日期减去日期的天数加1便是月份的第一天了。
同样的思路:
Last day of month:
select dateadd(month, 1,dateadd(day,-DATEPART(day,getdate()),getdate()))
权且做个记录。