Ответ 1
Используйте это:
set statistics time on
--query
set statistics time off
перейдите на вкладку "Сообщение", чтобы увидеть следующее сообщение:
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 165 ms.
Мне нужно получить время выполнения моего запроса. Я использую
declare @starttime datetime
declare @endtime datetime
set @starttime =getdate()
-- execute my query here
set @endtime = GETDATE()
select @[email protected]
Но выход идет как 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 }
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
Попробуйте с этим другим преобразованием после вашего diff:
SELECT CONVERT(VARCHAR(12),@[email protected], 108) -- 00:02:10
SELECT CONVERT(VARCHAR(12),@[email protected], 114) -- 00:02:10.707
108 и 114 представляют тип формата для преобразования даты, см. http://msdn.microsoft.com/it-it/library/ms187928.aspx
Используйте время тип данных, который доступен в SQL Server 2008 и выше
Теперь теги правильные, и это SQL Server 2005...
select CONVERT(varchar(12), @[email protected], 114)
DECLARE @StartTime datetime,@EndTime datetime SELECT @StartTime=GETDATE()
- Ваш запрос будет запущен здесь -
SELECT @EndTime=GETDATE() SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in microseconds]
Обновление для тех, кто использует более поздние версии SQL Server, чем OP: в SQL Server 2017 (версия 14.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
, которая была объяснена здесь.