我想在每个月的第一个星期(即不包括sat,sun)安排我的包裹。 假设每月的第一天是星期六或星期日,那么星期一只应执行该程序。 假设几个月的第一天落在任何一周(星期一,星期二,星期三,星期四,星期五),然后在同一天执行该程序。 请告诉我如何在sql代理中设置日程安排?
提前致谢
答案 0 :(得分:2)
您可以将其安排为每天运行,只需检查代码中的日期,并仅在日期匹配时执行。
--WorkDay of current month
DECLARE @FoM DATETIME
SELECT
@FoM =
CASE
WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Saturday'
THEN dateadd(mm, DATEDIFF(MM, 0, getdate()), 0) + 2
WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Sunday'
THEN dateadd(mm, DATEDIFF(MM, 0, getdate()), 0) + 1
ELSE dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)
END
IF @FoM = CAST(GETDATE() as DATE)
BEGIN
...your code to execute...
END
答案 1 :(得分:1)
您可以在每个月的第一个星期一安排作业,如下面在作业的SQL代理计划属性中所述:Scheduling First Monday of Every month