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

किसी दिनांक से जोड़ते या घटाते समय SQL सर्वर में "तिथि int के साथ असंगत है" को ठीक करें

यदि आपको त्रुटि संदेश "संदेश 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में किसी निर्दिष्ट स्थान पर सूची आइटम कैसे खोजें

  2. SSMS के माध्यम से SQL सर्वर एजेंट सक्षम करें

  3. जहां में (आईडी की सरणी)

  4. टी-एसक्यूएल स्किप टेक स्टोर्ड प्रोसीजर

  5. डेटाटाइम के लिए एसएसआईएस स्रोत प्रारूप निहित रूपांतरण