सवाल अस्पष्ट है, लेकिन ऐसा लगता है कि आप समानता मैच करने की कोशिश कर रहे हैं जो आपके द्वारा अपेक्षित पंक्तियों को वापस नहीं कर रहा है, इसलिए मैं अनुमान लगा रहा हूं कि समस्या यह है कि मिलीसेकंड समस्याग्रस्त हो रहे हैं। यहां कई तरीके हैं:
- CONVERT का उपयोग करके दोनों मानों (varcharetc के रूप में) को प्रारूपित करें:महंगा forCPU, अनुक्रमणिका का उपयोग नहीं कर सकता
- थीमथ करने के लिए DATEDIFF/DATEPART का उपयोग करें - समान, लेकिन काफी नहीं महँगा
- खोज करने के लिए एक श्रेणी बनाएं
तीसरा विकल्प लगभग हमेशा सबसे कुशल होता है, क्योंकि यह अनुक्रमण का अच्छा उपयोग कर सकता है, और इसके लिए CPU के बड़े पैमाने की आवश्यकता नहीं होती है।
उदाहरण के लिए, उपरोक्त में, चूंकि आपकी सटीकता सेकंड* है, इसलिए मैं इसका उपयोग करूंगा:
DECLARE @end datetime
SET @end = DATEADD(ss,1,@p_date)
फिर फ़ॉर्म का WHERE जोड़ें:
WHERE column_datetime >= @p_date AND column_datetime < @end
यदि आपके पास column_datetime पर एक संकुल अनुक्रमणिका है, तो यह सबसे अच्छा काम करेगा, लेकिन यदि आपके पास column_datetime पर एक गैर-संकुल अनुक्रमणिका है, तो भी ठीक काम करना चाहिए।
[*=अगर @p_date में मिलीसेकंड शामिल हैं, तो आपको DATEADD
के माध्यम से उन ms को ट्रिम करने के बारे में अधिक सोचने की आवश्यकता होगी। , या छोटी रेंज करें, आदि]