The*_*Man 3 sql date sql-server-2008
关于特定整数字段存储数据的方式,我遇到了一些心理障碍。
具体来说,有一列的整数范围为 1 - 127;每个整数代表一周中不同日期的组合。例如:星期一 = 2^0 或 1,星期二 = 2^2 或 2,星期三 = 2^3 或 8;如果可以选择添加,星期一 + 星期二 = 3。
我已经能够使用此处找到的示例部分提取日期值。但是,当两天加在一起时(例如星期一 + 星期二 = 3),该特定示例不起作用。有人能指出我正确的方向吗?
仅供参考,我正在使用 SQL Server 2008 R2。很抱歉,如果之前已经发布过此帖子,我看了一下,但找不到任何其他帖子。
您正在处理的内容称为按位运算符。
这是一篇很好的读物,其中包含清晰简单的示例。
为了完整起见,以下是您所看到的内容,按一周中的每一天分为几列。
DECLARE @bitwise TABLE (someValue TINYINT)
INSERT INTO @bitwise (someValue)
SELECT 1 UNION
SELECT 5 UNION
SELECT 127
SELECT someValue, CASE WHEN (1&someValue)=1 THEN 'SUNDAY' END
, CASE WHEN (2&someValue)=2 THEN 'MONDAY' END
, CASE WHEN (4&someValue)=4 THEN 'TUESDAY' END
, CASE WHEN (8&someValue)=8 THEN 'WEDNESDAY' END
, CASE WHEN (16&someValue)=16 THEN 'THURSDAY' END
, CASE WHEN (32&someValue)=32 THEN 'FRIDAY' END
, CASE WHEN (64&someValue)=64 THEN 'SATURDAY' END
FROM @bitwise
Run Code Online (Sandbox Code Playgroud)