如何计算 SQL 服务器中的年和月日期差异?

How to calculate the date difference in years and months in SQL Server?

我正在尝试计算 SQL 服务器中的频率估计值,我正在使用以下查询来获取结果,

FORMAT(DATEADD(month,-66, DATEADD(dd, 0,DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0))), 'd','us') --For -5.5 years Frequency

FORMAT(DATEADD(month,-6, DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, 0, DATA_ASOF_TSTMP), 0))), 'd','us') --For -6 Months Frequency

我得到了以下结果

5.5_Years_Frequency    6_Months_Frequency
          4/1/2015             3/30/2020

对于 -6 个月的频率,我得到的结束日期是 2020 年 3 月 30 日,但是 3 月有 31 天,所以,我希望结果是 2020 年 3 月 31 日,而不是 2020 年 3 月 30 日,如下所示.

预期结果,

5.5_Years_Frequency    6_Months_Frequency
          4/1/2015              3/31/2020

谁能帮我得到预期的结果

更改计算顺序:

  1. 确定季度
  2. 减去 6 个月
  3. 减去 1 天

6 个月频率:

select FORMAT(DATEADD(dd, -1, DATEADD(month,-6, DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0))), 'd','us');

Fiddle