เมื่อเร็ว ๆ นี้ฉันได้ดูกระบวนการที่เก็บไว้ค่อนข้างเก่าที่เขียนขึ้นสำหรับ 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()
ฉันหนึ่งจะหลีกเลี่ยงไวยากรณ์นี้เช่นกาฬโรคเพราะมันไม่มีเอกสาร