DELETE from Table WHERE Date > GETDATE();
GETDATE() में समय शामिल है। इसके बजायMSSQL GetDate() का उपयोग करते समय मुझे केवल तारीख कैसे मिलती है?
2011-01-26 14:58:21.637
होने का मैं कैसे प्राप्त कर सकते हैं:
2011-01-26 00:00:00.000
DELETE from Table WHERE Date > GETDATE();
GETDATE() में समय शामिल है। इसके बजायMSSQL GetDate() का उपयोग करते समय मुझे केवल तारीख कैसे मिलती है?
2011-01-26 14:58:21.637
होने का मैं कैसे प्राप्त कर सकते हैं:
2011-01-26 00:00:00.000
एसक्यूएल सर्वर के लिए थोड़ा सा पूर्वाग्रह
सारांश
DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
एसक्यूएल सर्वर 2008, हालांकि date
प्रकार है। तो बस का उपयोग
CAST(GETDATE() AS DATE)
संपादित करें: एक दिन जोड़ने के लिए, इससे पहले कि "शून्य"
DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)
cyberkiwi से दिन की तुलना:
एक वैकल्पिक कि 2 कार्यों को शामिल नहीं करता है (+1 ब्रैकेट में या हमारे अंदर हो सकता है)।
DATEDIFF(DAY, 0, GETDATE() +1)
DateDiff
एक नंबर प्रदान करता है, लेकिन भी आप इस अभिव्यक्ति का उपयोग करना चाहते सभी प्रयोजनों के लिए यह एक तारीख के रूप में काम करेंगे, VARCHAR है, यह प्रत्यक्ष परिवर्तित छोड़कर - जो मामले में आप बदलना GETDATE पर सीधे दृष्टिकोण का इस्तेमाल किया है | (), उदाहरण के लिए
convert(varchar, GETDATE() +1, 102)
पर विचार नहीं करता है मैं इस मूल्य में एक दिन कैसे जोड़ूं? – sooprise
CAST (GETDATE() + 1 AS DATE का चयन करें) – eidgenossen
@eidgenossen: सरल, लेकिन एक अंतर्निहित रूपांतरण पर निर्भर करता है। कम स्पष्ट। – gbn
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
101 के लिए क्या है? – sooprise
यह आउटपुट स्ट्रिंग का प्रारूप निर्धारित करता है, इस मामले में mm/dd/yyyy hh: mm: ss। इसलिए वर्कर (10) जो समय के हिस्से को कम करता है। – JohnOpincar
यह डेटाबेस विशिष्ट है। आपने निर्दिष्ट नहीं किया है कि आप किस डेटाबेस इंजन का उपयोग कर रहे हैं।
उदा। PostgreSQL में आप कास्ट करते हैं (तिथि के रूप में myvalue)।
आपका मतलब है GETDATE() एक सुराग पर्याप्त नहीं है? – RichardTheKiwi
मुझे लगता है कि ओपी ने कहा "एमएसएसक्यूएल" –
CONVERT(varchar,GETDATE(),102)
102 के लिए क्या है? – sooprise
101, 102, आदि, CONVERT फ़ंक्शन के लिए केवल पैरामीटर हैं। मेरा मानना है कि आप वास्तव में 101 का उपयोग करना चाहते हैं जो मिमी/डीडी/वाईय के रूप में है, जबकि 102 मिमी में है .dd.yyyy मुझे विश्वास है ... – Saggio
यह एक स्ट्रिंग देता है। निहित रूपांतरण पर भरोसा करने के बजाय, इसे किसी तारीख को स्पष्ट रूप से डालने के लिए सबसे अच्छा है। – Leigh
यहाँ आप कुछ समाधान है;)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
क्षमा करें, लेकिन वह लिंक अपूर्ण है: यह डेटड/डेटीफ तकनीक – gbn
एसक्यूएल सर्वर 2008 के लिए, सबसे अच्छा और सूचकांक के अनुकूल तरीके
DELETE from Table WHERE Date > CAST(GETDATE() as DATE);
पहले एसक्यूएल सर्वर के संस्करणों के लिए है, तिथि गणित तेजी से परिवर्तन किया VARCHAR करने से काम करेंगे। क्षेत्रीय सेटिंग्स के कारण भी वर्चर में कनवर्ट करना आपको गलत परिणाम दे सकता है।
DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());
नोट: यह रैप करने के लिए एक और DATEADD
DATEADD के बिना "पुरानी" शैली [प्राथमिकता] (http://msdn.microsoft.com/en-us/library/ms190309.aspx) के आधार पर int से तारीख तक अंतर्निहित रूपांतरण पर निर्भर करती है। यह अभ्यास में प्रभावी ढंग से DATEADD है, नहीं? मैं स्पष्ट रूप से स्पष्ट रूपांतरण पसंद करता हूं, भले ही यह क्लीनर दिखता हो। – gbn
यह सुनिश्चित नहीं है कि क्यूओ इसके बारे में कैसे जाता है, लेकिन DATEADD मैन्युअल रूप से अनुरोध करने का कोई कारण नहीं है। हालांकि डेटाटाइप डेटाटाइम है, फिर भी तुलना करते समय 'आंतरिक रूप से', इसे एक संख्यात्मक मान में परिवर्तित कर दिया जाता है, इसलिए इसे केवल एक int के रूप में छोड़ना बेहतर हो सकता है। – RichardTheKiwi
साथ DATEDIFF
आप
DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);
जो एक स्ट्रिंग देता है। निहित रूपांतरण पर भरोसा न करें। इसके बजाए, इसे किसी तारीख या दिनांक/समय पर स्पष्ट रूप से डालें। – Leigh
भी उपयोग कर सकते हैं अनावश्यक है, विचार है कि आप चाहते हो सकता है '> =' बजाय '>' , या आप वास्तव में 2011-01-26 00: 00: 00.000 ... –
पर कॉल को हटाने पर चूक जाएंगे, अच्छी टिप्पणी, मैंने वास्तव में इस टिप्पणी को पढ़ने से पहले इसे बदल दिया :) – sooprise
एक साधारण समाधान होगा 'कास्ट करें (बाएं (getdate(), 11) डेटाटाइम के रूप में) ' –