को एसक्यूएल 2000 और SQL 2005 में बदल सकते हैं, तो आप एक DATETIME से समय घटक को दूर करने, यानी एक अच्छा चयन कथन का उपयोग कर सकते हैं
SELECT DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0)
6 वापस आ जाएगी -एप्र -2010 (केवल आज के लिए)।
तो marc_s के जवाब के साथ संयुक्त, आप चाहते हैं
SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN DATEADD(dd, DATEDIFF(dd,0,'MY Date and Time, But I Only Want Date'), 0)
AND DATEADD(dd, DATEDIFF(dd,0,'MY Date and Time, But I Only Want Date'), 1)
संपादित करें:, आवश्यकताओं के अनुरूप दूसरे DATEADD में ध्यान दें 1 (इस दिन यह शुरू से ही 1 करने के लिए किया गया है कहते हैं (बजाय बदली गई 0), यह 7 वीं अप्रैल 2010 00:00:00) आप 6 चाहते हैं अप्रैल 23:59:59 आप एक दूसरी दूसरी तारीख से दूर ले
DATEADD(ss,-1,'My DateTime')
अंतिम कॉल बन जाएगा
DATEADD(ss,-1,DATEADD(dd, DATEDIFF(dd,0,'MY Date and Time, But I Only Want Date'), 1))
ठीक है कि एक बार में बहुत सारी जानकारी है! आशा है कि यह सब समझ :)
मैं सोच रहा हूं कि इनमें से कोई भी जवाब इसके मुकाबले कम है या नहीं। मुझे यह और भी पठनीय लगता है। जहां (DATEPART (yy, myColum) = '2010') और (DATEPART (मिमी, myColum) = '4') और (DATEPART (डीडी, myColum) = '7'); – Chin
** @ चिन, आपकी विधि इंडेक्स उपयोग को रोक देगी, और इसके परिणामस्वरूप धीमी तालिका स्कैन हो जाएगी। ** मैं अत्यधिक अनुशंसा करता हूं कि आप उस विधि का उपयोग करके किसी तारीख के आधार पर खोज न करें। आपको सीमा में तिथियों को "मंजिल" करने की आवश्यकता है, और यदि आप किसी इंडेक्स का उपयोग करना चाहते हैं तो कॉलम पर कोई फ़ंक्शन लागू नहीं करें। यह एक डेटाटाइम को फ़्लोर करने का तरीका है: http://stackoverflow.com/questions/85373/floor-a-date-in-sql-server –
@ केएम, इसके लिए धन्यवाद। मैंने सोचा कि मैं पूछूंगा और देखूंगा कि मैं आधार से बाहर था या नहीं। वर्तमान में मैं इस कॉलम पर एक इंडेक्स से अनजान हूं। मैं इसे ध्यान में रखूंगा हालांकि मेरी तिथियों के अनुसार मैंने सुझाव दिया है। – Chin