gpt4 book ai didi

sql - 计算季度开始日期

转载 作者:行者123 更新时间:2023-12-05 06:32:10 33 4
gpt4 key购买 nike

因为我必须根据@firstMonthOfFiscalyear 参数从任何财政年度开始日期计算特定季度的开始日期和季度编号。假设@firstMonthOfFiscalyear =4 意味着我的财政年度开始日期是 4 月 1 日,而我的季度没有开始,如下所示。Q1 - 4 月至 6 月Q2 - 七月至九月第三季度 - 10 月至 12 月第 4 季度 - 1 月至 3 月

本季度不会根据@firstMonthOfFiscalyear 参数值发生变化。

由此我能够获得季度编号,但无法获得该季度的开始日期。所以任何人都可以在这方面帮助我。

DECLARE @StartDateTime DATETIME
DECLARE @EndDateTime DATETIME
DECLARE @firstMonthOfFiscalyear int = 4 --Finanical year start month
SET @StartDateTime = '2017-04-01'
SET @EndDateTime = '2019-03-31';
WITH DateRange(Dates) AS
(
SELECT @StartDateTime as Date
Union ALL
SELECT DATEADD(d,1,Dates)
FROM DateRange
WHERE Dates < @EndDateTime
)
SELECT Dates
,FLOOR(((12 + MONTH(Dates) - @firstMonthOfFiscalyear) % 12) / 3 ) + 1 as quarterNo
, DATEADD(month, (IIF((month(dates)-@firstMonthOfFiscalyear)<0,(month(dates)-@firstMonthOfFiscalyear)+12,(month(dates)-@firstMonthOfFiscalyear))/3)*3, CAST( DATEFROMPARTS(year(dates),@firstMonthOfFiscalyear ,1) as Datetime)) as QuarterStartDate
FROM DateRange
OPTION (MAXRECURSION 0)

最佳答案

要计算财政季度,您只需减去月份差异并计算“实际”季度:

DATEPART(quarter, DATEADD(month, 1-@firstMonthOfFiscalyear, Dates))

要计算季度开始时间,请计算“实际”季度开始时间减去月差后的日期,最后再次加上月差。 @date 的“真实”四分之一的开始可以计算如下,利用 DATEDIFF 返回整数的事实,因此除以 3 是一个整数除法(不要去掉括号,乘法必须在整数除法之后):

DATEADD(month, 3*(DATEDIFF(month, 0, @date)/3), 0)

将@date 替换为 Dates,减少 @firstMonthOfFiscalyear-1 个月并在最后添加 @firstMonthOfFiscalyear-1 个月,这将成为

DATEADD(month, @firstMonthOfFiscalyear-1, DATEADD(month, 3*(DATEDIFF(month, 0, DATEADD(month, 1-@firstMonthOfFiscalyear, Dates))/3), 0))

这可以稍微简化为

DATEADD(month, @firstMonthOfFiscalyear-1 + 3*((DATEDIFF(month, 0, Dates)+1-@firstMonthOfFiscalyear)/3), 0)

所以最后,您的查询可能如下所示:

SELECT Dates
, DATEPART(quarter, DATEADD(month, 1-@firstMonthOfFiscalyear, Dates)) AS quarterNo
, DATEADD(month, @firstMonthOfFiscalyear-1 + 3*((DATEDIFF(month, 0, Dates)+1-@firstMonthOfFiscalyear)/3), 0) AS QuarterStartDate
FROM DateRange

关于sql - 计算季度开始日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51429847/

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