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

在SQL Server中将数字转换为DaysOfWeek星期名称的方法

在SQL Server中解析Windows任务计划的星期标志位数值为星期名称

你的需求是将对应Windows任务计划WeeklyTrigger.DaysOfWeek属性的整数值(位标志格式),转换为对应的星期名称列表。以下是具体实现方案:

核心实现逻辑

每个星期对应一个2的幂次整数(位标志),通过位运算判断目标数值是否包含该星期的标志位,再将匹配到的星期名称拼接成逗号分隔的字符串。

完整示例代码

-- 定义星期枚举映射表
DECLARE @DaysOfWeek TABLE
(
    DayEnum INT NOT NULL,
    DayName NVARCHAR(10) NOT NULL
)

INSERT INTO @DaysOfWeek
VALUES (1, '周日'),
       (2, '周一'),
       (4, '周二'),
       (8, '周三'),
       (16, '周四'),
       (32, '周五'),
       (64, '周六')

-- 传入需要解析的目标数值(示例为28)
DECLARE @TargetValue INT = 28

-- SQL Server 2017+ 版本:用STRING_AGG直接拼接
SELECT STRING_AGG(DayName, ', ') AS 对应星期
FROM @DaysOfWeek
WHERE (@TargetValue & DayEnum) = DayEnum

兼容低版本SQL Server(2016及以下)

如果你的SQL Server版本不支持STRING_AGG,可以用STUFF + FOR XML PATH的方式实现拼接:

SELECT STUFF((
    SELECT ', ' + DayName
    FROM @DaysOfWeek
    WHERE (@TargetValue & DayEnum) = DayEnum
    FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS 对应星期

示例结果

当@TargetValue = 28时,返回结果为:

周二, 周三, 周四

(因为28 = 4 + 8 + 16,对应周二、周三、周四的标志位均被设置)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:56:05