我需要获取查询的执行时间。我正在使用
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
我只需要时间部分。
答案 0 :(得分:19)
使用此:
set statistics time on
--query
set statistics time off
然后转到“消息”标签,看到如下消息:
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 165 ms.
答案 1 :(得分:4)
SET STATISTICS TIME { ON | OFF }
Example
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
答案 2 :(得分:3)
在diff之后尝试使用这种不同的转换:
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
答案 3 :(得分:2)
使用SQL Server 2008及更高版本中可用的time数据类型
现在标签是正确的,这是SQL Server 2005 ...
select CONVERT(varchar(12), @endtime-@starttime, 114)
答案 4 :(得分:2)
DECLARE @StartTime datetime,@EndTime datetime SELECT @StartTime=GETDATE()
- 你要运行的查询就在这里 -
SELECT @EndTime=GETDATE() SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in microseconds]
答案 5 :(得分:1)
答案 6 :(得分:0)
您应该使用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
的内置功能,here对此进行了解释。