Gần đây tôi đã xem qua một số quy trình được lưu trữ khá cũ được viết cho SQL Server 2005 và tôi đã nhận thấy điều gì đó mà tôi không hiểu. Nó dường như là một số loại chức năng gọi.
Một ví dụ:
SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
Điều này sẽ hiển thị tất cả các hàng từ sys.objects
đó có create_date
trước 24 giờ trước.
Nếu tôi hiển thị kế hoạch thực hiện cho truy vấn này, tôi thấy nó {fn Now()}
được thay thế getdate()
bằng Cơ sở dữ liệu:
SELECT [o].[name],[o].[type_desc],[o].[create_date]
FROM [sys].[objects] [o]
WHERE [o].[create_date]<(getdate()-@1)
Rõ ràng, sử dụng {fn Now()}
là khó hiểu hơn nhiều GetDate()
. Tôi cho một người sẽ tránh cú pháp này giống như bệnh dịch vì nó không có giấy tờ.