我有一个包含不同功能和步骤的日志文件:
我需要的是整个功能的持续时间。 这是我到目前为止的声明:
SELECT [Id]
,[Func]
,[Step]
,[Timestamp]
,CAST((SELECT [Timestamp]
FROM [LiPimDb].[dbo].[Log_Export_Catalog]
WHERE [Id] = [Log].[Id]+1)-[Timestamp]AS TIME(3)) AS Duration
FROM [LiPimDb].[dbo].[Log_Export_Catalog] AS [Log]
WHERE Func = 'SP_Create_Export_Catalog'
我是否需要获得子查询然后得到持续时间的总和?
答案 0 :(得分:1)
看起来简单GROUP BY
就是您所需要的:
SELECT
Func
,DATEDIFF(second, MAX(Timestamp), MIN(Timestamp)) AS DurationSeconds
FROM [LiPimDb].[dbo].[Log_Export_Catalog] AS [Log]
WHERE Func = 'SP_Create_Export_Catalog'
GROUP BY Func
删除WHERE
过滤器以查看每个功能的持续时间。
答案 1 :(得分:0)
从您的表格中我可以说您只需要end
和start
之间的差异。
由于这似乎是一个存储过程,最简单的可能是这样的:
DECLARE @startTime DATETIME=GETDATE();
...Your code here ...
DECLARE @duration TIME=CAST(GETDATE()-@startTime AS TIME);
SELECT @duration;
可以将最后一个值插入到日志表中以便于检索...