本文介绍了返回给定年份的复活节的功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以,这是一个有趣的小编程挑战。我正在写一个快速的方法来确定特定年份的所有市场假期,然后我开始,并发现了确定其日期的逻辑是多么疯狂 - 在春分之后!有没有人知道现有的功能来计算给定年份的复活节的日期?认为,这很可能不是 ;我只是想我会问,如果有人已经做到了这一点。 (这似乎很可能)。
更新:其实我真的在寻找强>(复活节前的周五)...我只是想到复活节会让我在那里。既然我在美国,我假设我在寻找天主教复活节?但是如果我错了,可能有人可以纠正我。
解决方案
in SQL Server Easter Sunday would look like this, scroll down for Good Friday
CREATE FUNCTION dbo.GetEasterSunday
( @Y INT )
RETURNS SMALLDATETIME
AS
BEGIN
DECLARE @EpactCalc INT,
@PaschalDaysCalc INT,
@NumOfDaysToSunday INT,
@EasterMonth INT,
@EasterDay INT
SET @EpactCalc = (24 + 19 * (@Y % 19)) % 30
SET @PaschalDaysCalc = @EpactCalc - (@EpactCalc / 28)
SET @NumOfDaysToSunday = @PaschalDaysCalc - (
(@Y + @Y / 4 + @PaschalDaysCalc - 13) % 7
)
SET @EasterMonth = 3 + (@NumOfDaysToSunday + 40) / 44
SET @EasterDay = @NumOfDaysToSunday + 28 - (
31 * (@EasterMonth / 4)
)
RETURN
(
SELECT CONVERT
( SMALLDATETIME,
RTRIM(@Y)
+ RIGHT('0'+RTRIM(@EasterMonth), 2)
+ RIGHT('0'+RTRIM(@EasterDay), 2)
)
END
GO
Good Friday is like this and it uses the Easter function above
CREATE FUNCTION dbo.GetGoodFriday
(
@Y INT
)
RETURNS SMALLDATETIME
AS
BEGIN
RETURN (SELECT dbo.GetEasterSunday(@Y) - 2)
END
GO
这篇关于返回给定年份的复活节的功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!