GETDATE Vs SYSDATETIME

Para obtener la fecha del sistema podemos utilizar las funciones GETDATE() o SYSDATETIME() de SQL server.

La pregunta es cual es la diferencia entre ellas…

Para obtener la respuesta ejecutamos la siguiente consulta:

SELECT GETDATE() 'GETDATE',   SYSDATETIME() 'SYSDATETIME'

El resultado:

GETDATE                                 SYSDATETIME
2012-05-14 18:05:04.720        2012-05-14 18:05:04.7232705

Entonces… ¿cuál es la diferencia?

Cuando utilizamos GETDATE la precisión se limita a milisegundos mientras que la precisión de SYSDATETIME llega hasta nanosegundos (¡CHAN!)
SYSDATETIME() es importante cuando se utiliza el tipo de datos DATETIME2 y por lo tanto la diferencia entre las funciones mencionadas es impostante al necesitar una mayor precisión.

Conclusión

Realmente no hay razón para continuar usando GETDATE. A partir de SQL 2008 es recomendado el uso de SYSDATETIME para recuperar la fecha y/u hora. (no vaya a ser que alguien descontinúe GETDATE ;P)

Saludos,