Baru-baru ini saya telah mencari melalui beberapa prosedur tersimpan yang cukup lama yang ditulis untuk SQL Server 2005, dan saya perhatikan sesuatu yang saya tidak mengerti. Tampaknya ada beberapa jenis panggilan fungsi.
Sebuah sampel:
SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
Ini akan menampilkan semua baris dari sys.objects
yang memiliki create_date
sebelum 24 jam yang lalu.
Jika saya menampilkan rencana eksekusi untuk kueri ini, saya melihat bahwa {fn Now()}
itu diganti dengan getdate()
oleh Mesin Database:
SELECT [o].[name],[o].[type_desc],[o].[create_date]
FROM [sys].[objects] [o]
WHERE [o].[create_date]<(getdate()-@1)
Jelas, menggunakan {fn Now()}
jauh lebih bodoh daripada GetDate()
. I untuk satu akan menghindari sintaks ini seperti wabah karena tidak berdokumen.