में तिथि और डेटाटाइम की समानता की तुलना करना मैं datetime
फ़ील्ड के बराबर date
फ़ील्ड के आधार पर पंक्तियों को वापस कर रहा हूं। dd/MM/yyyy = dd/MM/yyyy 00:00:00
के प्रारूप में जब वे स्पष्ट रूप से सीधे मेल खाते हैं लेकिन मैं उस समय की अवहेलना करना चाहता हूं।SQL सर्वर
3 विधियां हैं जिनकी मैंने कोशिश की है, वे सभी काम करते हैं, लेकिन मैं सोच रहा हूं कि सबसे अच्छा क्या है।
1 - CONVERT(varchar(10),MyDate,103) = CONVERT(varchar(10),MyDateTime,103))
2 - MyDate = CONVERT(date,MyDateTime)
3 - MyDate = CAST(MyDateTime AS date)
4 - MyDate = DATEADD(dd, DATEDIFF(dd, 0, MyDateTime), 0)
, # 1 सबसे धीमी होना चाहिए, स्ट्रिंग में कनवर्ट करने तो स्ट्रिंग तुलना का उपयोग कर निश्चित रूप से कम से कम कुशल होना चाहिए। लेकिन परीक्षणों में यह सबसे तेज़ है! नीचे मेरी परीक्षण है:
1 - 303ms औसत
2 - 284ms औसत
3 - 273ms औसत
4 - 1745ms औसत
टेस्ट ~ 300,000 का एक नमूना आकार से है
क्या इसके लिए कोई कारण है? क्या पहला विकल्प वास्तव में सबसे अच्छा विकल्प है?
संपादित करें: 300k रिकॉर्ड के लिए परीक्षणों को 10 गुणा चलाने के लिए परीक्षण मानों को बदल दिया गया है। परिणाम दिखाने के लिए परिणामों को बदलता है DATEADD/DATEDIFF
विधि टिम श्मेल्टर के नीचे उल्लेख किया गया है। ऐसा लगता है कि अब तक कम से कम कुशल है।
मैं 'DATEADD/DATEDIFF' दृष्टिकोण का उपयोग कर रहा हूं। http://stackoverflow.com/questions/1177449/best-approach-to-remove-time-part-of-datetime-in-sql-server –
करीबी अनुरोध के संदर्भ में, मुझे नहीं लगता कि यह एक डुप्लिकेट है क्योंकि इस तरह के दूसरे प्रश्न में समाधान के खिलाफ चला जाता है।यहां स्ट्रिंग रूपांतरण सबसे तेज़ है! 'DATEADD/DATEDIFF' – anothershrubery
खाते में लेने के लिए संपादित प्रश्न यह नमूना आकार किस नमूना आकार पर आधारित है? –