我有一份安排好的工作,时间是凌晨12:45。现在通过SP,我想得到这一次。我正在SP中运行这个查询:
EXEC msdb.dbo.sp_help_job
@job_name = N'Daily Trends',
@job_aspect = N'SCHEDULES' ;此查询显示一个列的结果。
active_start_time
4500预期输出: 12:45:00
请你建议一下如何显示上午/下午的时间。
编辑:,我从c#代码中调用这个SP。如果有人能建议我如何在c#代码中以适当的格式转换时间也将是有帮助的。
发布于 2013-12-30 10:04:34
由于时间值似乎存储为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表可能是个坏主意,如果我记得正确的话,有一些视图可以访问类似的信息,最好使用它们。
发布于 2013-12-30 09:26:41
因此,为了使数据看起来像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 发布于 2013-12-30 09:28:58
您可以使用same计划表,但是日期是相同的。
这个博客应该有助于解析日期/时间:
http://blog.sqlauthority.com/2008/12/22/sql-server-find-next-running-time-of-scheduled-job-using-t-sql/
https://stackoverflow.com/questions/20836315
复制相似问题