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

SQL Server判断日期是否为圣诞节或元旦的函数代码正确性咨询

代码正确性判断

你给出的日期判断逻辑核心是正确的,但存在可读性和后续维护的风险,具体说明如下:

  • 基础逻辑没问题:你使用MONTH()、DAY()函数提取date类型参数的月、日信息,匹配12月25日(圣诞节)、1月1日(元旦)的规则,在你约定的不考虑时区、日期格式的前提下,判断结果是准确的。
  • 存在的隐患:SQL中AND运算符的优先级高于OR,你当前的写法虽然执行结果正确,但逻辑边界不清晰,如果后续需要在判断条件中补充其他规则(比如限定年份范围),很容易出现逻辑错误。
  • 优化后的代码建议:给两个日期的判断逻辑分别包裹括号,明确优先级:
DECLARE @paramDate date
-- 其他业务逻辑
IF (MONTH(@paramDate) = 12 AND DAY(@paramDate) = 25)
    OR (MONTH(@paramDate) = 1 AND DAY(@paramDate) = 1)
BEGIN
    -- 命中节日的处理逻辑
END
  • 如果你需要封装成复用的函数,可以参考下面的标量函数实现:
CREATE FUNCTION dbo.IsChristmasOrNewYearDay (@CheckDate DATE)
RETURNS BIT
AS
BEGIN
    RETURN CASE 
        WHEN (MONTH(@CheckDate) = 12 AND DAY(@CheckDate) = 25) 
              OR (MONTH(@CheckDate) = 1 AND DAY(@CheckDate) = 1) 
        THEN 1 
        ELSE 0 
    END
END

调用方式为SELECT dbo.IsChristmasOrNewYearDay('2024-01-01'),返回1表示命中节日,0表示未命中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:45:02