这是一个棘手的问题。首先你包含的stackexchange链接非常好。我遵循了这一点,并且做了我自己的追踪。下面的代码将使您朝着正确的方向发展。你可能需要做详细的测试,我发现当答案是同一分钟,但秒数稍微偏离时,我遇到了一些计时问题。你当然可以根据需要进行修改。
这里是代码的第一稿应该把你在正确的方向
declare @jobname [sysname] = 'Check'
Select
nextOne = min(
case freq_subday_type
when 8 then dateadd(hour , (Datediff(hour , [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time), getdate())/freq_subday_interval + 1) * freq_subday_interval, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time))
when 4 then dateadd(minute, (Datediff(minute, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time), getdate())/freq_subday_interval + 1) * freq_subday_interval, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time))
when 2 then dateadd(second, (Datediff(minute, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time), getdate())/freq_subday_interval + 1) * freq_subday_interval, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time))
end)
FROM msdb.[dbo].[sysschedules] ss
inner join msdb.[dbo].[sysjobschedules] sjs on ss.schedule_id = sjs.schedule_id
inner join msdb.[dbo].[sysjobs] sj on sjs.job_id = sj.job_id
where sj.Name = @jobname and ss.enabled = 1