在sql select语句中计算财务年度?

Jam*_*123 6 sql t-sql sql-server

我有一个日期字段需要以财政年度格式返回.例

Start_Date        Year 
04/01/2012 -      2013
01/01/2012 -      2012
09/15/2013 -      2014
Run Code Online (Sandbox Code Playgroud)

我们需要计算

04/01/2012 to 03/31/2013 is FY 2013
Run Code Online (Sandbox Code Playgroud)

04/01/2013 to 03/31/2014 is FY 2014
Run Code Online (Sandbox Code Playgroud)

我们怎样才能在select语句中做到这一点?

Gor*_*off 12

大卫有一个很好的解决方案.一个更简单的表达是:

select year(dateadd(month, -3, start_date)) as FiscalYear
Run Code Online (Sandbox Code Playgroud)

也就是说,减去3个月并取一年.

编辑:

正如评论中所指出的,这似乎过早产生了一年.这有两个解决方案:

select year(dateadd(month, 9, start_date)) as FiscalYear

select 1 + year(dateadd(month, -3, start_date)) as FiscalYear
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 11

SELECT CASE WHEN DatePart(Month, Start_Date) >= 4
            THEN DatePart(Year, Start_Date) + 1
            ELSE DatePart(Year, Start_Date)
       END AS Fiscal_Year
FROM data
Run Code Online (Sandbox Code Playgroud)