निकटतम पूरे दिन पर जाने के लिए, व्यापक उपयोग में तीन दृष्टिकोण हैं। 0
डेटाटाइम के दिनों की संख्या खोजने के लिए पहला व्यक्ति datediff
का उपयोग करता है। 0
डेटाटाइम 1 जनवरी, 1 9 00 से मेल खाता है। प्रारंभ तिथि में दिन अंतर जोड़कर, आप पूरे दिन तक चले गए हैं;
select dateadd(d, 0, datediff(d, 0, getdate()))
दूसरी विधि पाठ आधारित है: यह varchar(10)
साथ पाठ वर्णन ट्रंकेटस, केवल तारीख हिस्सा छोड़ने:
select convert(varchar(10),getdate(),111)
तीसरी विधि तथ्य यह है कि एक datetime
वास्तव में एक चल बिन्दु का प्रतिनिधित्व करता है का उपयोग करता है 1 9 00 के बाद से दिनों की संख्या। इसलिए इसे पूरे नंबर पर गोल करके, उदाहरण के लिए floor
का उपयोग करके, आपको दिन की शुरुआत मिलती है:
select cast(floor(cast(getdate() as float)) as datetime)
अपने दूसरे प्रश्न का उत्तर देने के लिए, सप्ताह की शुरुआत ट्रिकियर है। एक तरह से घटाना है दिन के इस सप्ताह:
select dateadd(dd, 1 - datepart(dw, getdate()), getdate())
यह भी एक समय हिस्सा देता है, तो आप पहली तारीख को पाने के लिए समय-अलग करना तरीकों में से एक के साथ संयोजित करना होगा । उदाहरण के लिए, @start_of_day
पठनीयता के लिए एक चर के रूप में के साथ:
declare @start_of_day datetime
set @start_of_day = cast(floor(cast(getdate() as float)) as datetime)
select dateadd(dd, 1 - datepart(dw, @start_of_day), @start_of_day)
वर्ष, माह, घंटे और मिनट अभी भी "1900 के बाद से अंतर" के साथ काम की शुरू दृष्टिकोण:
select dateadd(yy, datediff(yy, 0, getdate()), 0)
select dateadd(m, datediff(m, 0, getdate()), 0)
select dateadd(hh, datediff(hh, 0, getdate()), 0)
select dateadd(mi, datediff(mi, 0, getdate()), 0)
दूसरे द्वारा गोल करने के लिए एक अलग दृष्टिकोण की आवश्यकता होती है, क्योंकि 0
के बाद से सेकंड की संख्या एक अतिप्रवाह प्रदान करती है। कि चारों ओर एक तरह से, दिन की शुरुआत उपयोग कर रहा है 1900 के बजाय एक संदर्भ तारीख के रूप में: 5 मिनट द्वारा
declare @start_of_day datetime
set @start_of_day = cast(floor(cast(getdate() as float)) as datetime)
select dateadd(s, datediff(s, @start_of_day, getdate()), @start_of_day)
करने के लिए गोल, मिनट राउंडिंग विधि एडजस्ट करें। , मिनट के अंतर का भागफल लो /5*5
का उपयोग कर उदाहरण के लिए:
select dateadd(mi, datediff(mi,0,getdate())/5*5, 0)
यह रूप में अच्छी तरह क्वार्टर और आधे घंटे के लिए काम करता है।
यहां एक अच्छा स्पष्टीकरण के साथ समान प्रश्न है: http://stackoverflow.com/questions/923295/how-to-truncate-a-datetime-in-sql-server – Alex