एक वर्ष से मेल खाने वाली पंक्तियों के लिए "तालिका खोजें" के लिए गणना किए गए कॉलम की कोई आवश्यकता नहीं है। इसके बजाय एक अंतराल का उपयोग करते हुए आपको वह जगह लिखें जहां आपके दिनांक कॉलम पर एक अनुक्रमणिका है।
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
यदि आप दो स्ट्रिंग्स के बजाय क्वेरी के तर्क के रूप में एक इंट (वर्ष) का उपयोग करना चाहते हैं तो आप dateadd
का उपयोग कर सकते हैं . बस यह सुनिश्चित कर लें कि आप एक्टिविटीडेट कॉलम में कोई फ़ंक्शन/मैनिपुलेशन लागू नहीं करते हैं क्योंकि यदि आप ऐसा करते हैं तो SQL सर्वर इंडेक्स का उपयोग नहीं कर पाएगा।
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)