बिना समय भाग के वर्तमान तिथि कैसे प्राप्त करें


83

SQL सर्वर 2005 में मैं बिना समय भाग के वर्तमान तिथि कैसे प्राप्त करूं? मैं उपयोग कर रहा हूं GETDATE()लेकिन यह चाहूंगा कि इसका समय 00: 00: 00.0 हो

जवाबों:


119

सबसे तेज अगर आपको किसी रिकॉर्डसेट पर चलना है और SQL Server 2008 में तारीख नहीं है

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

StackOverflow पर दो अलग और उत्कृष्ट उत्तर इसको सहन करते हैं: एक , दो

वर्कर रूपांतरण इसे करने के सबसे बुरे तरीकों में से एक है। बेशक, एक मूल्य के लिए यह कोई फर्क नहीं पड़ता, लेकिन यह एक अच्छी आदत है।

यह तरीका निर्धारक भी है, यदि आप एक गणना किए गए कॉलम को इंडेक्स करना चाहते हैं। यहां तक ​​कि जो लोग SQL सर्वर के बारे में किताबें लिखते हैं वे डेटाइम रूपांतरण के साथ पकड़े जाते हैं

यह तकनीक विस्तार योग्य भी है।

  • बिता कल: DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
  • महीने की शुरुआत: DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
  • पिछले महीने का अंत: DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
  • अगले महीने की शुरुआत: DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)

संपादित करें:

जैसा कि मैंने नियतत्ववाद के बारे में उल्लेख किया है, जब तक आप शैली 112 का उपयोग नहीं करते हैं, तब तक varchar तरीके सुरक्षित नहीं हैं।

यहां अन्य उत्तर बताते हैं कि आप इसे कभी भी किसी कॉलम में लागू नहीं करेंगे। यह सही है, लेकिन आप चाहें तो 100k पंक्तियों का चयन कर सकते हैं या डेटलाइन द्वारा एक संगणित कॉलम या ग्रुप जोड़ सकते हैं। फिर आपको इस विधि का उपयोग करना होगा।

अन्य उत्तर में भी शैली 110 का उल्लेख है। यह भाषा या सेट DATEFORMAT सुरक्षित नहीं है और "ब्रिटिश" भाषा सेटिंग के साथ विफल हो जाती है। टिबोर करासज़ी द्वारा डेटाइम डेटेट पर अंतिम गाइड देखें


1
बशर्ते लिंक मृत हो।
विश्वनाथन अय्यर

6

आपको इसे एक स्वरूप पैटर्न को निर्दिष्ट करने के लिए इसे विचर में बदलना होगा (इस मामले में 110) फिर डेटाटाइम में परिवर्तित (या कास्ट) करें।

select getdate(), cast(convert(varchar(10), getdate(), 110) as datetime)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.