Нещодавно я переглядав деякі досить старі збережені процедури, написані для SQL Server 2005, і помітив щось, чого я не розумію. Схоже, це якийсь тип виклику функції.
Зразок:
SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
Це відобразить усі рядки з sys.objects
цього рядка create_date
до 24 годин тому.
Якщо я показую план виконання цього запиту, я бачу, що {fn Now()}
його замінюють getdate()
двигун бази даних:
SELECT [o].[name],[o].[type_desc],[o].[create_date]
FROM [sys].[objects] [o]
WHERE [o].[create_date]<(getdate()-@1)
Зрозуміло, що використання {fn Now()}
набагато тупіше, ніж GetDate()
. Я для одного уникну цього синтаксису, як чума, оскільки він недокументований.