[英]How to change the execute time of job in hangfire which is currently scheduled?
[英]How to get scheduled job time?
我有一个计划的工作,运行时间为12:45:00 AM。 现在通过SP我想得到这个时间。 我在我的SP中运行此查询:
EXEC msdb.dbo.sp_help_job
@job_name = N'Daily Trends',
@job_aspect = N'SCHEDULES' ;
该查询用列显示结果
active_start_time
4500
预期输出: 12 : 45 : 00 AM。
您能否建议如何用上午/下午显示时间。
编辑:我从C#代码调用此SP。 如果有人可以建议我如何用C#代码以正确的格式转换时间,也会有所帮助。
因此,要使数据看起来像HH:MM:SS格式,可以使用以下SQL:
SELECT LEFT(RIGHT('0' + Cast(active_start_time AS VARCHAR), 6), 2)
+ ':'
+ Substring(RIGHT('0' + Cast(active_start_time AS VARCHAR), 6), 3, 2)
+ ':'
+ RIGHT(Cast(active_start_time AS VARCHAR), 2)
FROM msdb..sysschedules
您可以使用sysjobschedules表,但是日期将相同。
该博客应有助于解析日期/时间:
由于时间值似乎存储为带有HHMMSS
的小时(HH)可选,所以我认为您需要检查字符串的长度是否为四个字符(或者值是否超过115959,以较快者为准)。 这样的查询应该工作:
SELECT CASE
WHEN Len(active_start_time) = 4 THEN Cast(
Dateadd(minute, active_start_time /
100, '00:00') AS TIME)
ELSE LEFT(RIGHT('0' + Cast(active_start_time AS VARCHAR), 6), 2)
+ ':'
+ Substring(RIGHT('0' + Cast(active_start_time AS VARCHAR), 6), 3,
2)
+ ':'
+ RIGHT(Cast(active_start_time AS VARCHAR), 2)
END AS [Start time]
FROM msdb..sysschedules
INNER JOIN msdb.dbo.sysjobschedules
ON msdb.dbo.sysjobschedules.schedule_id =
msdb..sysschedules.schedule_id
INNER JOIN msdb.dbo.sysjobs
ON msdb.dbo.sysjobs.job_id = msdb.dbo.sysjobschedules.job_id
WHERE msdb.dbo.sysjobs.name = 'Daily Trends'
我没有用那么多的值来测试它,但我相信它应该起作用,或者至少给您提示如何进行操作。 直接访问msdb
表可能不是一个好主意,如果我没记错的话,有一些视图可以访问相似的信息,最好使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.