Listing 1: Performance Test SET NOCOUNT ON; DECLARE @i AS INT, @iterations AS INT, @start AS DATETIME, @dt AS DATETIME, @overhead AS INT; SET @iterations = 1000000; -- Overhead SET @start = GETDATE(); SET @i = 1; WHILE @i <= @iterations BEGIN SET @i = @i + 1; END SET @overhead = DATEDIFF(ms, @start, GETDATE()); -- Technique 1 - Convert to character string and back SET @start = GETDATE(); SET @i = 1; WHILE @i <= @iterations BEGIN SET @dt = CAST( CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME); SET @i = @i + 1; END SELECT 'Technique 1' AS technique, DATEDIFF(ms, @start, GETDATE()) - @overhead AS ms; -- Technique 2 - Convert to integer and back SET @start = GETDATE(); SET @i = 1; WHILE @i <= @iterations BEGIN SET @dt = CAST(CAST(GETDATE()-0.50000004 AS INT) AS DATETIME); SET @i = @i + 1; END SELECT 'Technique 2' AS technique, DATEDIFF(ms, @start, GETDATE()) - @overhead AS ms; -- Technique 3 - Based on DATEDIFF SET @start = GETDATE(); SET @i = 1; WHILE @i <= @iterations BEGIN SET @dt = DATEADD( day, DATEDIFF(day, 0, GETDATE()), 0); SET @i = @i + 1; END SELECT 'Technique 3' AS technique, DATEDIFF(ms, @start, GETDATE()) - @overhead AS ms;