Solução: DECLARE @s DATE, @e DATE SELECT @s = '20100101', @e = '20121021'; SELECT y + ' year(s), ' + m + ' month(s) and ' + d + ' day(s).' FROM ( SELECT RTRIM(y), RTRIM(m - CASE WHEN pd < 0 THEN 1 ELSE 0 END), RTRIM(CASE WHEN pd < 0 THEN nd ELSE pd END) FROM ( SELECT DATEDIFF(MONTH, @s, @e) / 12, DATEDIFF(MONTH, @s, @e) % 12, DATEDIFF(DAY, @s, DATEADD(MONTH, -DATEDIFF(MONTH, @s, @e), @e)), DATEDIFF(DAY, @s, DATEADD(MONTH, 1-DATEDIFF(MONTH, @s, @e), @e)) ) AS x (y, m, pd, nd) ) AS y (y, m, d);