Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में SUBDATE से तारीखों का वर्ष 2020 से 2011 कैसे बदलें?

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 क्लॉज से विशिष्ट पंक्तियाँ लक्षित करें
  1. - MySQL में YEAR() फ़ंक्शन का उपयोग करके विशिष्ट वर्ष के रिकॉर्ड प्राप्त करना

    MySQL में YEAR() फ़ंक्शन का उपयोग करके DATETIME/DATE कॉलम से वर्ष निकालें और विशिष्ट वर्ष के रिकॉर्ड फ़िल्टर करें। सिंटैक्स SELECT * FROM yourTableName WHERE YEAR(yourColumnName) = yourYearValue; उदाहरण: टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable ( -> CustomerName VARCHAR(1

  1. - MySQL में तिथियों की सूची से वर्तमान तिथि प्राप्त करने की क्वेरी

    मान लें वर्तमान तिथि है: 2019-07-22 उदाहरण टेबल बनाएं: mysql> create table DemoTable705 (ShippingDate datetime); Query OK, 0 rows affected (0.67 sec) रिकॉर्ड डालें: mysql> insert into DemoTable705 values(2019-01-21 23:59:00); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTab

  1. - MySQL में आज की तारीख 00:00 से वर्तमान समय तक की तारीख चुनें

    DATE(NOW()) (आज 00:00:00) और NOW() (वर्तमान डेटाटाइम) के बीच BETWEEN या तुलना ऑपरेटर का उपयोग करके आज के रिकॉर्ड फ़िल्टर करें। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable (DueDate DATETIME); Query OK, 0 rows affected (0.66 sec) INSERT INTO DemoTable VALUES(2019-09-14),(2019-09-14 08:00:10),