首页 > 解决方案 > SQL - 计算每年相同日期之间的日期

问题描述

我有一个包含以下行的表:

    date            
 2018-09-01           
 2018-10-01     
 2019-01-01
 2019-09-01
 2020-03-01
 2020-08-01

假设财政年度从上一年的 10 月开始,到当年的 9 月结束。所以 2020 财年将从2019-10-012020-09-30。我正在尝试计算每个会计年度内的日期,因此创建下表:

  date_count     fiscal_year    
      1              FY18
      3              FY19           
      2              FY20 

我尝试了以下方法来获得一年:

SELECT count(*) as date_count, 'FY18' as fiscal_year
FROM table_name
WHERE date between '2017-10-01' and '2018-09-30'

我得到

  date_count     fiscal_year    
      1              FY18

但我需要在每个财政年度都这样做。我在网上看到过类似的答案,但没有一个包含日期的答案。我需要使用递归查询吗?

标签: sqlsql-serverbetween

解决方案


只需添加 3 个月并提取年份:

select t.*,
       year(dateadd(month, 3, date)) as fiscal_year
from t;

推荐阅读