某日期的第一天和最后一天

declare @tmpdate datetime
select @tmpdate=dateadd(week,2,'2010-08-26')
select @tmpdate=getdate()

--select datepart(weekday,@tmpdate)
--当周第一天(星期一为一周的第一天):
select dateadd(day,-datepart(weekday,@tmpdate)+2,@tmpdate)
--当周最后一天(星期一为一周的第一天):
select dateadd(day,8-datepart(weekday,@tmpdate),@tmpdate)
--当月第一天
select dateadd(day,-day(@tmpdate)+1,@tmpdate)
--当月最后一天(注意是在当月的下一月第一天减一天即为当月的最后一天)
select dateadd(day,-day(dateadd(m,1,@wDate)),dateadd(m,1,@wDate))

--当季的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
--当年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

--计算一月有多少天

select date = @tmpdate, days = 32 - day(@tmpdate + 32 - day(@tmpdate))

原文地址:https://www.cnblogs.com/jes_shaw/p/1813056.html