MySQL में दिनांक कॉलम का वर्ष बदलने के लिए (जैसे 2020 से 2011) SUBDATE() या DATE_SUB() के साथ INTERVAL 9 YEAR का उपयोग करें (2020 - 2011 = 9 वर्ष)।
सिंटैक्स
UPDATE yourTableName
SET yourDateColumn = SUBDATE(yourDateColumn, INTERVAL 9 YEAR);
उदाहरण के साथ समझें
टेबल बनाएं:
CREATE TABLE ChangeYearFrom2020To2011 (
Id INT NOT NULL AUTO_INCREMENT,
ExpiryDate DATE,
PRIMARY KEY(Id)
);
2020 की तारीखें डालें:
INSERT INTO ChangeYearFrom2020To2011(ExpiryDate) VALUES('2020-09-12');
INSERT INTO ChangeYearFrom2020To2011(ExpiryDate) VALUES('2020-12-21');
INSERT INTO ChangeYearFrom2020To2011(ExpiryDate) VALUES('2020-01-29');
INSERT INTO ChangeYearFrom2020To2011(ExpiryDate) VALUES('2020-06-30');
INSERT INTO ChangeYearFrom2020To2011(ExpiryDate) VALUES('2020-12-31');
सभी रिकॉर्ड देखें:
SELECT * FROM ChangeYearFrom2020To2011;
आउटपुट (सभी 2020):
+----+------------+
| Id | ExpiryDate |
+----+------------+
| 1 | 2020-09-12 |
| 2 | 2020-12-21 |
| 3 | 2020-01-29 |
| 4 | 2020-06-30 |
| 5 | 2020-12-31 |
+----+------------+
वर्ष 2020 से 2011 (9 साल घटाएं) बदलें
UPDATE ChangeYearFrom2020To2011
SET ExpiryDate = SUBDATE(ExpiryDate, INTERVAL 9 YEAR);
परिणाम: Query OK, 5 rows affected
अपडेट के बाद जांचें
SELECT * FROM ChangeYearFrom2020To2011;
आउटपुट (सभी 2011):
+----+------------+
| Id | ExpiryDate |
+----+------------+
| 1 | 2011-09-12 |
| 2 | 2011-12-21 |
| 3 | 2011-01-29 |
| 4 | 2011-06-30 |
| 5 | 2011-12-31 |
+----+------------+
वैकल्पिक तरीके
DATE_SUB() - समान
UPDATE table SET dateCol = DATE_SUB(dateCol, INTERVAL 9 YEAR);
DATE_ADD() ऋणात्मक अंतराल के साथ
UPDATE table SET dateCol = DATE_ADD(dateCol, INTERVAL -9 YEAR);
वर्ष सीधे सेट करें (यदि महीना/दिन समान रखना हो)
UPDATE table
SET dateCol = DATE_FORMAT(dateCol, '2011-%m-%d');
नोट: यह स्ट्रिंग बनाता है, DATE टाइप के लिए CAST आवश्यक हो सकता है।
STR_TO_DATE के साथ
UPDATE table
SET dateCol = STR_TO_DATE(CONCAT('2011-', DATE_FORMAT(dateCol, '%m-%d')), '%Y-%m-%d');
लीप वर्ष ध्यान दें
यदि मूल तारीख 29 फरवरी है और लक्ष्य वर्ष लीप वर्ष नहीं है:
SUBDATE('2020-02-29', INTERVAL 9 YEAR)→2011-02-28(MySQL स्वचालित समायोजित करता है)- यही व्यवहार
DATE_SUB,DATE_ADDमें भी
नोट
- महीना और दिन अपरिवर्तित रहते हैं, केवल वर्ष बदलता है
- बड़े टेबल पर बैच में अपडेट करें
- लेनदेन (BEGIN/COMMIT) में लपेटें ताकि रोलबैक संभव हो
- WHERE क्लॉज से विशिष्ट पंक्तियाँ लक्षित करें