हाल ही में मैं कुछ काफी पुरानी संग्रहीत प्रक्रियाओं के माध्यम से देख रहा हूं जो 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()
। मैं एक के लिए प्लेग की तरह इस वाक्यविन्यास से बचूंगा क्योंकि यह अनिर्दिष्ट है।