यह करने के लिए केवल उचित तरीका datetime मूल्यों के समय भाग दूर पट्टी और परिणाम है, और सबसे अच्छा तरीका है एक दिनांक-समय भाग पट्टी तुलना करने के लिए है इस तरह है:
cast(current_timestamp as date)
मैं का उपयोग करें और एक प्रक्रिया है कि निम्नांकित दो पंक्तियों में से एक की तरह लग रहा था की वकालत करते थे:
cast(floor(cast(getdate() as float)) as datetime)
dateadd(dd,0, datediff(dd,0, getDate()))
लेकिन अब जब Sql सर्वर Date
प्रकार है, जो एक समय घटक पकड़ नहीं है, या तो उपयोग करने के लिए कोई कारण है उन तकनीकों का।
यहां ध्यान रखने योग्य एक और बात यह है कि यदि आप किसी भी खंड या स्थिति में शामिल होने पर प्रत्येक पंक्ति के लिए दो डेटाटाइम मानों के लिए ऐसा करने की ज़रूरत है तो यह अभी भी एक प्रश्न को कम करने जा रहा है। यदि संभव हो तो आप इसे किसी भी तरह से कारक बनाना चाहते हैं ताकि यह यथासंभव पूर्व-गणना की जा सके, उदाहरण के लिए दृश्य या गणना कॉलम का उपयोग करना।
अंत में, ध्यान दें कि DATEDIFF फ़ंक्शन पार की सीमाओं की संख्या की तुलना करता है। तो '2009-09-14 11:59:59'
और '2009-09-15 00:00:01'
के बीच के दिनों में दिनांकित 1 है, भले ही केवल 2 सेकंड बीत चुके हैं, लेकिन '2009-09-15 00:00:01'
और '2009-09-15 11:59:59'
के बीच के दिनों में DATEDIFF अभी भी शून्य है, भले ही 86,398 सेकंड बीत गए हों। ध्यान दें कि यह वास्तव में उस समय के हिस्से के बारे में बिल्कुल परवाह नहीं करता है। आपकी क्वेरी क्या करने का प्रयास कर रही है, इस पर निर्भर करता है कि आप इसका उपयोग अपने लाभ के लिए कर सकते हैं।
स्रोत
2009-09-15 14:22:53
समयपूर्व अनुकूलन से चिंतित न हों: 'DATEDIFF' का उपयोग करके अपनी क्वेरी लिखें, फिर देखें कि यह एक बाधा है या क्वेरी योजना की जांच नहीं कर रहा है। यदि यह एक समस्या है, तो एक विकल्प की तलाश करें। – Welbog
[SQL सर्वर में डेटाटाइम के समय भाग को हटाने के लिए सर्वोत्तम दृष्टिकोण] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/1177449/best-approach-to-remove-time-part-of-datetime-in-sql- सर्वर) – abatishchev