Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में महीने का पहला दिन प्राप्त करने के 3 तरीके

SQL सर्वर में महीने के पहले दिन को वापस करने के लिए T-SQL का उपयोग करने के लिए नीचे तीन विकल्प दिए गए हैं।

यह चालू महीने का पहला दिन हो सकता है, या किसी दी गई तारीख के आधार पर महीने का पहला दिन हो सकता है।

विकल्प 1

इसे करने का एक तरीका इस प्रकार है:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(dd, -( DAY( @date ) -1 ), @date);

परिणाम:

2035-10-01

इसमें तारीख को महीने की शुरुआत में वापस लाने के लिए कुछ टी-एसक्यूएल फ़ंक्शंस का उपयोग करना शामिल है।

DATEADD() के बारे में अधिक जानकारी के लिए और DAY() फ़ंक्शन, देखें DATEADD() SQL सर्वर में उदाहरण और DAY() SQL सर्वर में उदाहरण।

विकल्प 2

महीने का पहला दिन पाने के लिए यहां एक और विकल्प दिया गया है:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(month, DATEDIFF(month, 0, @date), 0);

परिणाम:

2035-10-01 00:00:00.000

यहां, हमने DATEDIFF() . को शामिल किया है हमारी गणना में कार्य करें।

हालाँकि हमने प्रारंभिक चर को date . के रूप में घोषित किया है मान, परिणाम एक datetime है मूल्य। हम CONVERT() . का उपयोग कर सकते हैं या CAST() परिणाम को date में बदलने के लिए मूल्य:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT CAST(DATEADD(month, DATEDIFF(month, 0, @date), 0) AS date);

परिणाम:

2035-10-01

विकल्प 3

यहां एक और विकल्प है:

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date - DAY( @date ) + 1;

परिणाम:

2035-10-01 00:00:00.000

विकल्प 2 के समान, परिणाम एक datetime है मान, लेकिन इस बार ऐसा इसलिए है क्योंकि हमने वेरिएबल को datetime . के रूप में घोषित किया है मूल्य। हालांकि, हम इसे date . में बदलने के लिए समान व्यवहार कर सकते हैं मूल्य:

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date - DAY( @date ) + 1 AS date);

परिणाम:

2035-10-01

जिस कारण से हमने वेरिएबल को date घोषित नहीं किया मान इसलिए है क्योंकि इसके परिणामस्वरूप एक त्रुटि होगी:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date - DAY( @date ) + 1;

परिणाम:

Msg 206, Level 16, State 2, Line 3
Operand type clash: date is incompatible with int

ऐसा इसलिए है क्योंकि हम किसी date . में एक पूर्णांक जोड़ने का प्रयास कर रहे हैं मूल्य, जो काम नहीं करता है। हालांकि, datetime . में एक पूर्णांक जोड़ना value काम करती है, और इसीलिए हमने वेरिएबल को datetime . के रूप में घोषित किया है ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या GUID टकराव संभव है?

  2. SQL सर्वर पर हमेशा उपलब्धता समूहों को कॉन्फ़िगर करना

  3. SQL Server 2008 में XML फ़ील्ड से मानों का चयन करें

  4. Node.js MSSQL टेडियस कनेक्शन त्रुटि:लोकलहोस्ट से कनेक्ट करने में विफल:1433 - ECONNREFUSED कनेक्ट करें

  5. क्या SQL सर्वर में DECIMAL और NUMERIC के बीच कोई अंतर है?