gpt4 book ai didi

sql-server - SQL Server - 如何动态确定财政年度?

转载 作者:行者123 更新时间:2023-12-03 16:43:27 25 4
gpt4 key购买 nike

每年我都必须更新我公司的财务报告以包括新的财政年度(因为这一年不是日历年的尾数),所以我这样做......

Case
when ST_date >= '1996.11.01 00:00:00' and st_date < '1997.11.01 00:00:00'
then '96-97'
[etc]
end as year,

每年我都必须记住我需要修改哪些报告 - 大多数年份我都忘记了!

...是否有一种简单的动态方法来确定这一点?

最佳答案

您绝对可以在 SQL Server 中编写一个简单的存储函数来根据日期确定财政年度:

CREATE FUNCTION dbo.GetFinancialYear (@input DATETIME)
RETURNS VARCHAR(20)
AS BEGIN
DECLARE @FinYear VARCHAR(20)

SET @FinYear =
CASE
WHEN @INPUT >= '19961101' AND @input < '19971101' THEN '96-97'
WHEN @INPUT >= '19971101' AND @input < '19981101' THEN '97-98'
ELSE '(other)'
END

RETURN @FinYear
END

然后在您的所有查询中使用它。

SELECT 
somedate, dbo.GetFinancialYear(somedate)
......

如果您需要添加一个新的财政年度 - 只需更新一个函数,您就完成了!

更新:如果你想让这个完全动态,你可以依赖这个财政年度总是从 11 月开始的事实1 - 然后改用这种方法:

CREATE FUNCTION dbo.GetFinancialYear (@input DATETIME)
RETURNS VARCHAR(20)
AS BEGIN
DECLARE @FinYear VARCHAR(20)

DECLARE @YearOfDate INT

IF (MONTH(@input) >= 11)
SET @YearOfDate = YEAR(@input)
ELSE
SET @YearOfDate = YEAR(@input) - 1

SET @FinYear = RIGHT(CAST(@YearOfDate AS CHAR(4)), 2) + '-' + RIGHT(CAST((@YearOfDate + 1) AS CHAR(4)), 2)

RETURN @FinYear
END

这将返回:

  • 05/06 表示日期,例如 2005-11-25
  • 04/05 表示日期,例如 2005-07-25

关于sql-server - SQL Server - 如何动态确定财政年度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com