यदि आपको त्रुटि संदेश "संदेश 206" मिल रहा है, जिसमें लिखा है कि "ऑपरेंड टाइप क्लैश:दिनांक int के साथ असंगत है" किसी दिनांक को जोड़ने (या घटाना) करने का प्रयास करते समय, यह शायद इसलिए है क्योंकि आप अंकगणित करने का प्रयास कर रहे हैं एक integer
. के बीच और एक date
मूल्य।
इस समस्या को ठीक करने के लिए, या तो date
बदलें एक datetime
. के लिए मान मान लें या DATEADD()
का उपयोग करें समारोह।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
परिणाम:
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
इस मामले में, मैंने एक वैरिएबल को दिनांक मान के रूप में घोषित किया, एक मान असाइन किया, फिर मैंने उस तिथि में एक पूर्णांक जोड़ने का प्रयास किया।
समाधान 1
इस समस्या को ठीक करने का एक तरीका datetime
. का उपयोग करना है date
. के बजाय मान मूल्य:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
परिणाम:
2035-10-16 00:00:00.000
यह स्पष्ट रूप से (संभावित रूप से अनावश्यक) समय मान शामिल होने का प्रभाव है। हम परिणाम को वापस date
. में बदल सकते हैं CONVERT()
. का उपयोग करके मान या CAST()
:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
परिणाम:
2035-10-16
समाधान 2
इस समस्या को ठीक करने का दूसरा तरीका DATEADD()
. का उपयोग करना है अंकगणित करने के लिए कार्य:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
परिणाम:
2035-10-16