如何使用 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 REAL
和 CASE 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
假设我说我的财政年度开始日期是 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 REAL
和 CASE 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