我需要获取查询的执行时间。我在用
declare @starttime datetime
declare @endtime datetime
set @starttime =getdate()
-- execute my query here
set @endtime = GETDATE()
select @endtime-@starttime
但输出是1900-01-01 00:02:10.707
我只需要时间部分。
我需要获取查询的执行时间。我在用
declare @starttime datetime
declare @endtime datetime
set @starttime =getdate()
-- execute my query here
set @endtime = GETDATE()
select @endtime-@starttime
但输出是1900-01-01 00:02:10.707
我只需要时间部分。
用这个:
set statistics time on
--query
set statistics time off
然后转到“消息”选项卡以查看如下消息:
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 165 ms.
设置统计时间选项:
SET STATISTICS TIME { ON | OFF }
例子:
USE AdventureWorks2012;
GO
SET STATISTICS TIME ON;
GO
SELECT ProductID, StartDate, EndDate, StandardCost
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET STATISTICS TIME OFF;
GO
在您的差异之后尝试这种不同的转换:
SELECT CONVERT(VARCHAR(12),@endtime-@starttime, 108) -- 00:02:10
SELECT CONVERT(VARCHAR(12),@endtime-@starttime, 114) -- 00:02:10.707
108和114代表日期转换的格式类型,请参考http://msdn.microsoft.com/it-it/library/ms187928.aspx
声明 @StartTime 日期时间,@EndTime 日期时间 选择 @StartTime=GETDATE()
--您要运行的查询在这里--
选择 @EndTime=GETDATE() SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [持续时间,以毫秒为单位]
使用SQL Server 2008 及更高版本中可用的时间数据类型
现在标签是正确的,这是 SQL Server 2005 ...
select CONVERT(varchar(12), @endtime-@starttime, 114)
您应该习惯于DATEDIFF(MICROSECOND, @starttime, @endtime)
以毫秒为单位获取经过的时间,因此您的查询应该更改为如下内容:
DECLARE @starttime datetime
DECLARE @endtime datetime
SET @starttime =getdate()
-- execute my query here
SET @endtime = GETDATE()
SELECT DATEDIFF(MICROSECOND, @starttime, @endtime)
Include Client Statistics
虽然您可以使用已在此处解释的名为的内置功能。
在 SSMS 中,在菜单栏中:转到
1.查询>查询选项>高级>设置统计时间
2.查询>查询选项>高级>SET STATISTICS IO
这将使输出在您的消息窗口中看起来像这样:
SQL Server 解析和编译时间:CPU 时间 = x 毫秒,运行时间 = y 毫秒。
SQL Server 执行时间:CPU 时间 = x 毫秒,已用时间 = y 毫秒。