सबसे अच्छा तरीका है:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
ऐसा इसलिए है क्योंकि आंतरिक रूप से, SQL सर्वर सभी तिथियों को दो पूर्णांकों के रूप में संग्रहीत करता है, जिनमें से पहला 1 जनवरी 1900 से ****दिनों की संख्या*** है। (दूसरा एक समय भाग है, जिसे संख्या के रूप में संग्रहीत किया जाता है) मध्यरात्रि के बाद से सेकंड। (SmallDateTime
. के लिए सेकंड s, या मिलीसेकंड DateTime
. के लिए s)
उपरोक्त अभिव्यक्ति का उपयोग करना बेहतर है क्योंकि यह सभी रूपांतरणों से बचता है, किसी भी प्रसंस्करण को किए बिना दिनांक आंतरिक प्रतिनिधित्व में उस पहले पूर्णांक को सीधे पढ़ना और एक्सेस करना ... उपरोक्त अभिव्यक्ति में दो शून्य (जो 1 का प्रतिनिधित्व करते हैं) जनवरी 1900), का उपयोग सीधे प्रसंस्करण या रूपांतरण के लिए भी किया जाता है, क्योंकि वे 1 जनवरी 1900 की तारीख के एसक्यूएल सर्वर के आंतरिक प्रतिनिधित्व से बिल्कुल मेल खाते हैं (एक पूर्णांक के रूप में) ..
*टिप्पणी। दरअसल, एक तारीख से दूसरी तारीख तक जाने के लिए आपको जितनी तारीख की सीमाएं (मध्यरात्रि) पार करनी पड़ती हैं।