Sql-Server
當 Freq_Type 是每週並且在計劃中選擇了一天以上時,MSDB.dbo.SysSchedules 中的 Freq_Interval 列的值是多少?
我正在閱讀 Microsoft API 中的SysSchedules表,並試圖在查詢中使用該表。
在文件中,Freq_Interval 列似乎是針對在時間表中選擇一天並且 Freq_Type 是每週時定義的。但是,當選擇超過一天時,每隔幾天組合的值是多少?
例如,我有一份工作計劃在每週一、週二、週三、週四和周五進行。我在 MSDB.dbo.SysSchedules 表中看到,它的 Freq_Interval 為 62(文件中未列出。)
該文件指出
freq_interval 是以下一項或多項:
1 = 星期日
2 = 星期一
4 = 星期二
8 = 星期三
16 = 星期四
32 = 星期五
64 = 星期六
這些值都是 2 的冪。
當您選擇多天時,只需添加不同的程式碼。
2 + 4 + 8 + 16 + 32 = 62
或者使用按位或運算符來組合它們。
2 | 4 | 8 | 16 | 32
(我的建議是
|
在程式碼中使用,+
如果將它們添加到您的腦海中!-|
是“正確”的使用方法,如果列表中有重複值,則不會出現錯誤行為)如果您嘗試執行反向操作,則需要按位和
DECLARE @Sunday TINYINT = 1, @Monday TINYINT = 2, @Tuesday TINYINT = 4, @Wednesday TINYINT = 8, @Thursday TINYINT = 16, @Friday TINYINT = 32, @Saturday TINYINT = 64; DECLARE @TestValue TINYINT = 62; SELECT CASE WHEN @TestValue & @Sunday = @Sunday THEN 'Y' ELSE 'N' END AS Sunday, CASE WHEN @TestValue & @Monday = @Monday THEN 'Y' ELSE 'N' END AS Monday, CASE WHEN @TestValue & @Tuesday = @Tuesday THEN 'Y' ELSE 'N' END AS Tuesday, CASE WHEN @TestValue & @Wednesday = @Wednesday THEN 'Y' ELSE 'N' END AS Wednesday, CASE WHEN @TestValue & @Thursday = @Thursday THEN 'Y' ELSE 'N' END AS Thursday, CASE WHEN @TestValue & @Friday = @Friday THEN 'Y' ELSE 'N' END AS Friday, CASE WHEN @TestValue & @Saturday = @Saturday THEN 'Y' ELSE 'N' END AS Saturday