You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修正T-SQL中东正教复活节日期计算错误的技术问询

东正教复活节日期计算的T-SQL转换错误排查

你的T-SQL代码存在三个关键错误,导致计算结果偏差:

  • 核心变量误用:原Python代码中计算日期的核心是基于变量e(对应你的@local_FIX_2)取模31,但你错误地使用了@local_FIX_1(对应Python的d)来计算日期,这是最主要的错误。
  • 语法冗余:声明@local_EASTERN_EASTER_MONTH的语句末尾多了一个多余的},会导致语法报错。
  • 布尔值转数值的逻辑缺失:Python中(m>4)会自动转为1(True)或0(False),但T-SQL里需要显式转换这个判断的结果为数值。

修正后的T-SQL代码

DECLARE @param_YEAR_NUMBER SMALLINT = 2025;

DECLARE @local_FIX_1 TINYINT = ((@param_YEAR_NUMBER % 19) * 19 + 15) % 30;
DECLARE @local_FIX_2 INT = ((((@param_YEAR_NUMBER % 4) * 2) + ((@param_YEAR_NUMBER % 7) * 4) - @local_FIX_1 + 34) % 7) + @local_FIX_1 + 127;

DECLARE @local_EASTERN_EASTER_MONTH TINYINT = @local_FIX_2 / 31;
DECLARE @local_EASTERN_EASTER_DAY TINYINT = (@local_FIX_2 % 31) + 1 + IIF(@local_EASTERN_EASTER_MONTH > 4, 1, 0);

IF (@local_EASTERN_EASTER_DAY > 30)
BEGIN
    SET @local_EASTERN_EASTER_DAY = 1;
    SET @local_EASTERN_EASTER_MONTH = 5;
END;

-- 输出结果
SELECT @local_EASTERN_EASTER_DAY AS EasterDay, @local_EASTERN_EASTER_MONTH AS EasterMonth, @param_YEAR_NUMBER AS EasterYear;

运行这段代码后,2025年的结果会正确返回4月20日。

内容的提问来源于stack exchange,提问作者Laura Lobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:22:14