SQL根据当前日期获取相应的日期

1、获取上个月的第一天与最后一天日期

SELECT DATEADD(m, -1,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) 上月第一天
SELECT DATEADD(s, -1,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) 上月最后一天

2、获取本月第一天与最后一天日期

SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) 本月第一天
SELECT DATEADD(s, -1,DATEADD(mm,DATEDIFF(mm,-1,getdate()),0))  本月最后天

3、获取本周的第一天与最后一天日期(周一为第一天)

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)  本周第一天
SELECT DATEADD(s, -1,DATEADD(wk, DATEDIFF(wk,0,getdate()), 7) ) 本周最后一天

4、获取去年上个月第一天与最后一天日期

SELECT DATEADD(YEAR,-1,DATEADD(m, -1,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))) 去年上月第一天
SELECT DATEADD(YEAR,-1,DATEADD(s, -1,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))) 去年上月最后一天

5、获取去年本月第一天与最后一天日期


SELECT DATEADD(YEAR,-1,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) 去年本月第一天
SELECT DATEADD(YEAR,-1,DATEADD(s, -1,DATEADD(mm,DATEDIFF(mm,-1,getdate()),0))) 去年本月最后天

6、获取去年本周的第一天和最后一天日期

SELECT DATEADD(wk, DATEDIFF(wk,0,DATEADD(YEAR,-1,getdate())), 0)  去年本周第一天
SELECT DATEADD(s, -1,DATEADD(wk, DATEDIFF(wk,0,DATEADD(YEAR,-1,getdate())), 7) ) 去年本周最后一天

7、获取今年的第一天和最后一天日期

SELECT dateadd(ms,0,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) 当本年第一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0)) 当本年最后一天

6、获取去年的第一天和最后一天日期

select  DATEADD(yy,-1, DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) 去年第一天
select  DATEADD(s,-1, DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) 去年最后一天