SQL Server 2008 में date
है डेटा प्रकार, जिसमें कोई समय संलग्न नहीं है। इस प्रकार आप आसानी से कनवर्ट करके, फिर DateAdd
. निष्पादित करके समय भाग को आसानी से हटा सकते हैं ।
SELECT DateAdd(month, -1, Convert(date, GetDate()));
यह एक date
लौटाएगा डेटा प्रकार। इसे datetime
होने के लिए बाध्य करने के लिए फिर से, आप बस एक और Convert
जोड़ सकते हैं :
SELECT Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));
आपको datetime
. में स्पष्ट रूपांतरण की आवश्यकता नहीं हो सकती है , हालांकि।
नोट:"आज से एक महीने पहले" को कई अलग-अलग तरीकों से परिभाषित किया जा सकता है। जिस तरह से यह SQL सर्वर में काम करता है वह पिछले महीने से उस दिन को वापस करना है जो वर्तमान महीने के समान दिन की संख्या के सबसे करीब है। इसका मतलब यह है कि 31 मार्च को चलने पर इस अभिव्यक्ति का परिणाम 28 फरवरी होगा। इसलिए, यदि आप इसके प्रभावों के बारे में स्पष्ट रूप से नहीं सोचते हैं, तो आपको कुछ परिदृश्यों में अपेक्षित परिणाम नहीं मिल सकते हैं, जैसे कि आपने एक प्रदर्शन किया- महीने की गणना कई बार, एक ही दिन को एक अलग महीने में प्राप्त करने की अपेक्षा (जैसे मार्च -> फरवरी -> जनवरी)।
SQL Fiddle पर लाइव डेमो देखें
डेमो प्रत्येक एक्सप्रेशन के मान और परिणामी डेटा प्रकार दिखाता है।