Recientemente, he estado revisando algunos procedimientos almacenados bastante antiguos que fueron escritos para SQL Server 2005, y he notado algo que no entiendo. Parece ser algún tipo de llamada de función.
Una muestra:
SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
Esto mostrará todas las filas de las sys.objectsque tenían create_dateantes de hace 24 horas.
Si visualizo el plan de ejecución para esta consulta, veo que {fn Now()}es reemplazado getdate()por el Motor de base de datos:
SELECT [o].[name],[o].[type_desc],[o].[create_date] 
FROM [sys].[objects] [o] 
WHERE [o].[create_date]<(getdate()-@1)
Claramente, usar {fn Now()}es mucho más obtuso que GetDate(). Por mi parte, evitaré esta sintaxis como la peste, ya que no está documentada.
fuente
