需求比较简单:获取日期(日期会变)上个月的25号

第一种解决思路:

  1. 已有日期减去一个月得到年月日
  2. 获取年份
  3. 获取 月份
  4. 拼接指定时间

日期减去一个月

select DATEADD(MONTH,-1,GETDATE())

获取年

SELECT YEAR(DATEADD(MONTH,-1,GETDATE()))

获取月

SELECT MONTH(DATEADD(MONTH,-1,GETDATE()))

拿年月日进行拼接:

select cast(YEAR(DATEADD(month,-1,getdate())) as varchar)+'-'+cast(MONTH(DATEADD(month,-1,getdate())) as varchar)+'-25'

结果:

2020-8-25

第二种解决思路:

  1. 日期减去一个月
  2. 获取 年月
  3. 拼接指定时间

获取 年月

SELECT CONVERT(VARCHAR(7),DATEADD(month,-1,getdate()),120)

结果如下:

2020-08

再拼接指定日期

SELECT CONVERT(VARCHAR(7),DATEADD(month,-1,getdate()),120)+'-25'

结果 :

2020-08-25

第二种比第一种更简单,因为第一种还要进行转换。