如何使用 SQLite 从创建日期计算财政年度

How can I calculate Financial year from created date using SQLite

假设我说我的财政年度开始日期是 2000 年 2 月 1 日。 那么财政年度应该是

2019-03-01 to 2020-02-29
2020-03-01 to 2021-02-28
2021-03-01 to 2022-02-28
.
.
.

我想使用 SQLite 显示财政年度的一列,如下所示。

Product created Date Financial Year
Apple 2019-05-28 FY 2019-2020
Apple 2020-01-15 FY 2019-2020
Banana 2020-04-22 FY 2020-2021
Mango 2021-10-15 FY 2021-2022

我怀疑维护一个单独的 table,其中包含自定义财政年度范围以及您要为每个范围显示的文本标签:

financial_years:

start_date | end_date   | label
2019-03-01 | 2020-02-29 | FY 2019-2020
2020-03-01 | 2021-02-28 | FY 2020-2021
2021-03-01 | 2022-02-28 | FY 2021-2022

现在我们需要做的就是将您的 table 产品添加到上述 table:

SELECT p.Product, p.created_date, fy.label
FROM products p
INNER JOIN financial_years fy
    ON p.created_date BETWEEN fy.start_date AND fy.end_date;

不需要单独的table。

你只需要函数 strftime():

SELECT *,
       'FY ' || strftime('%Y', createdDate, '-2 month') || '-' ||
       strftime('%Y', createdDate, '-2 month', '+1 year') FinancialYear
FROM products;

参见demo

createdDate REALCASE WHEN 的解决方案:

select Product,
  date(createdDate) as createdDate, 
  case when (abs(strftime('%m', createdDate)) < 3)
       then 'FY ' || cast(strftime('%Y', createdDate) - 1 as text) || '-' || strftime('%Y', createdDate)
       else 'FY ' || strftime('%Y', createdDate) || '-' || cast(strftime('%Y', createdDate) + 1 as text)
  end AS FinancialYear
from `products`;

观看演示 ​​here