Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं SQL सर्वर 2005 में दो डेटाटाइम फ़ील्ड की तुलना कैसे करूं?

सवाल अस्पष्ट है, लेकिन ऐसा लगता है कि आप समानता मैच करने की कोशिश कर रहे हैं जो आपके द्वारा अपेक्षित पंक्तियों को वापस नहीं कर रहा है, इसलिए मैं अनुमान लगा रहा हूं कि समस्या यह है कि मिलीसेकंड समस्याग्रस्त हो रहे हैं। यहां कई तरीके हैं:

  1. CONVERT का उपयोग करके दोनों मानों (varcharetc के रूप में) को प्रारूपित करें:महंगा forCPU, अनुक्रमणिका का उपयोग नहीं कर सकता
  2. थीमथ करने के लिए DATEDIFF/DATEPART का उपयोग करें - समान, लेकिन काफी नहीं महँगा
  3. खोज करने के लिए एक श्रेणी बनाएं

तीसरा विकल्प लगभग हमेशा सबसे कुशल होता है, क्योंकि यह अनुक्रमण का अच्छा उपयोग कर सकता है, और इसके लिए 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 को ट्रिम करने के बारे में अधिक सोचने की आवश्यकता होगी। , या छोटी रेंज करें, आदि]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बाधाओं को अनदेखा करते हुए SQL सर्वर तालिकाओं की सूची कैसे छोड़ें?

  2. T-SQL संग्रहीत कार्यविधियों को सत्यापित करने का एक विश्वसनीय तरीका

  3. दो एसक्यूएल प्रश्नों के बीच घटाव

  4. SQL सर्वर अंतर्निहित फ़ंक्शन नाम

  5. मूल तत्वों का पुनरावर्ती संयोजन