कड़ाई से, विधि a
कम से कम संसाधन गहन है:
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
उसी अवधि के लिए कम CPU को एक ही समय में एक लाख पंक्तियों के लिए गहन साबित करें, जिस तरह से उनके हाथों पर बहुत अधिक समय होता है: SQL सर्वर में सबसे प्रभावी तरीका दिनांक + समय से तारीख पाने के लिए?
मैंने इसी तरह के परिणामों के साथ भी एक समान परीक्षण कहीं और देखा।
मुझे DATEADD / DatedIFF पसंद है क्योंकि:
संपादित करें, अक्टूबर 2011
SQL Server 2008+ के लिए, आप CAST से date
यानी कर सकते हैं CAST(getdate() AS date)
। या बस date
डेटाटाइप का उपयोग करें ताकि हटाने का समय न हो।
संपादित करें, जनवरी 2012
यह कितना लचीला है, इसका एक काम किया गया उदाहरण: एसक्यूएल सर्वर में राउंडेड टाइम या डेट फिगर द्वारा गणना करने की आवश्यकता है
संपादित करें, मई 2012
बिना सोचे-समझे WHERE क्लॉज़ और लाइक में इसका इस्तेमाल न करें: किसी फ़ंक्शन को जोड़ने या किसी स्तंभ पर CAST को इंडेक्स का उपयोग अमान्य करता है। नंबर 2 यहां देखें: http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
अब, इसका एक उदाहरण बाद में SQL सर्वर ऑप्टिमाइज़र संस्करण है, जो CAST को सही ढंग से प्रबंधित कर रहा है, लेकिन आम तौर पर यह एक बुरा विचार होगा ...
डेटाटाइम 2 के लिए संपादित करें, सितंबर 2018
DECLARE @datetime2value datetime2 = '02180912 11:45' --this is deliberately within datetime2, year 0218
DECLARE @datetime2epoch datetime2 = '19000101'
select DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch)