在表格中有以下字段:
运行日期:2011-09-25 00:00:00.000
运行时间:05:00:00
运行时间:03:22:51
我需要的是Dateformat
运行日期+运行时间=作业开始时间(日期时间格式)
运行日期+(运行时间+运行持续时间)=作业结束时间(日期时间格式)
我很难做转换。任何人都可以帮忙。
这是我正在使用的存储过程 - 任何人都可以建议如何监控:
ALTER PROCEDURE [dbo]。[Sp_listjobrunhistory] @dateparam DATETIME, @JobName VARCHAR(100) 如 开始 SELECT --sysjobhistory.server, sysjobs.name 如 JOB_NAME, CASE sysjobhistory.run_status 什么时候0''失败' 什么时候那么'成功' ELSE'???' 结束 如 run_status, 投( Isnull(子串(CONVERT(VARCHAR(8),run_date),1,4)+' - '+ 子(CONVERT(VARCHAR (8),run_date),5,2)+' - '+ 子(CONVERT(VARCHAR( 8),run_date),7,2),'')AS DATETIME) 如 [运行日期],
Isnull(Substring(CONVERT(VARCHAR(7), run_time+1000000), 2, 2) + ':'
+
Substring(CONVERT(VARCHAR(7), run_time+1000000), 4, 2
)
+
':' +
Substring(CONVERT(VARCHAR(7), run_time+1000000), 6, 2), '')
AS
[Run TIME],
Isnull(Substring(CONVERT(VARCHAR(7), run_duration+1000000), 2, 2) +
':' +
Substring(CONVERT(VARCHAR(7), run_duration+1000000),
4,
2)
+ ':' +
Substring(CONVERT(VARCHAR(7), run_duration+1000000), 6, 2),
''
) AS
[Duration],
Isnull(Substring(CONVERT(VARCHAR(7), run_time+run_duration+1000000), 2, 2) + ':'
+
Substring(CONVERT(VARCHAR(7), run_time+run_duration+1000000), 4, 2
)
+
':' +
Substring(CONVERT(VARCHAR(7), run_time+run_duration+1000000), 6, 2), '')
AS
[Total TIME],
sysjobhistory.step_id,
sysjobhistory.step_name,
sysjobhistory.MESSAGE
FROM msdb.dbo.sysjobhistory
INNER JOIN msdb.dbo.sysjobs
ON msdb.dbo.sysjobhistory.job_id = msdb.dbo.sysjobs.job_id
WHERE sysjobhistory.run_date <= Datepart(yyyy, @dateparam) * 10000 +
Datepart(mm, @dateparam) * 100 +
Datepart
(
dd, @dateparam)
AND sysjobs.name = @JobName --remove this line if you want to show all jobs for the specified day
ORDER BY instance_id DESC
END 此致
答案 0 :(得分:1)
在SQL Server 2008中,不需要转换。
declare @T table
(
RunDate datetime,
RunTime time,
RunDuration time
)
insert into @T values('2011-09-25 00:00:00.000', '05:00:00', '03:22:51')
select RunDate + RunTime as StartTimeOfJob,
RunDate + RunTime + RunDuration as EndTimeOfJob
from @T
在2008年之前的版本中可能是这样的。
declare @T table
(
RunDate datetime,
RunTime varchar(8),
RunDuration varchar(8)
)
insert into @T values(
'2011-09-25 00:00:00.000',
'05:00:00',
'03:22:51')
select RunDate + RunTime as StartTimeOfJob,
RunDate + RunTime + RunDuration as EndTimeOfJob
from @T
糟糕!那里也不需要转换。
答案 1 :(得分:0)
以下是完成您所需要的代码:
create table dbo.RunDurationTest
(
RunDate datetime not null,
RunTime time not null,
RunDuration time not null
)
insert into rundurationtest
values ('2011-09-25 00:00:00.000', '05:00:00', '03:22:51')
select
(RunDate + RunTime) as RunDateTime,
(RunDate + RunTime + RunDuration) as EndRunDateTime,
*
from rundurationtest
答案 2 :(得分:0)
假设[Run Time]
和[Run Duration]
是varchar
字段,我会有以下内容:
select StartJob = [Run Date] + convert(datetime, [Run Time])
select EndJob = StartJob + convert(datetime, [Run Duration])