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

MySQL में विशिष्ट वर्ष के आधार पर DATE फॉर्मेट स्ट्रिंग से रिकॉर्ड कैसे अपडेट करें?

MySQL में जब तारीख VARCHAR कॉलम में 'dd/mm/yyyy' फॉर्मेट में स्टोर हो, तो STR_TO_DATE() के साथ YEAR() फंक्शन का उपयोग करके विशिष्ट वर्ष के रिकॉर्ड अपडेट करें।

उदाहरण: 2010 में जॉइनिंग वाले यूज़र्स का नाम बदलना

डेमो टेबल बनाएं (तारीख VARCHAR में):

mysql> CREATE TABLE DemoTable1924 (
    UserName VARCHAR(20),
    UserJoiningDate VARCHAR(40)
);

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1924 VALUES
('Chris', '10/12/2010'),
('David', '20/01/2011'),
('Mike', '20/01/2010'),
('Carol', '26/04/2013');

अपडेट से पहले:

+----------+-----------------+
| UserName | UserJoiningDate |
+----------+-----------------+
| Chris    | 10/12/2010      |
| David    | 20/01/2011      |
| Mike     | 20/01/2010      |
| Carol    | 26/04/2013      |
+----------+-----------------+

वर्ष 2010 के रिकॉर्ड्स के लिए नाम 'Robert' सेट करें:

mysql> UPDATE DemoTable1924
SET UserName = 'Robert'
WHERE YEAR(STR_TO_DATE(UserJoiningDate, '%d/%m/%Y')) = 2010;

अपडेट के बाद:

+----------+-----------------+
| UserName | UserJoiningDate |
+----------+-----------------+
| Robert   | 10/12/2010      |
| David    | 20/01/2011      |
| Robert   | 20/01/2010      |
| Carol    | 26/04/2013      |
+----------+-----------------+

फंक्शन व्याख्या

  • STR_TO_DATE(str, format): स्ट्रिंग को फॉर्मेट के अनुसार DATE में पार्स करता है
  • %d: दिन (01-31), %m: महीना (01-12), %Y: 4-अंकीय वर्ष
  • YEAR(date): DATE/DATETIME से वर्ष निकालता है

सामान्य दिनांक फॉर्मेट

फॉर्मेट स्ट्रिंगउदाहरणपैटर्न
'%d/%m/%Y'10/12/2010दिन/महीना/वर्ष
'%Y-%m-%d'2010-12-10ISO मानक
'%m/%d/%Y'12/10/2010US फॉर्मेट
'%d-%m-%Y'10-12-2010हाइफ़न सेपरेटर

बेहतर दृष्टिकोण: DATE/DATETIME कॉलम उपयोग करें

स्ट्रिंग में तारीख स्टोर करने के बजाय, उचित DATE या DATETIME कॉलम उपयोग करें:

ALTER TABLE DemoTable1924 
MODIFY UserJoiningDate DATE; -- डेटा माइग्रेशन के बाद

-- तब क्वेरी सरल हो जाती है:
UPDATE DemoTable1924 SET UserName = 'Robert' WHERE YEAR(UserJoiningDate) = 2010;

लाभ

  • इंडेक्स उपयोग संभव (स्ट्रिंग पर YEAR() इंडेक्स उपयोग नहीं कर सकता)
  • डेटा इंटीग्रिटी (अमान्य तारीख अस्वीकार)
  • बिल्ट-इन फंक्शन (DATEDIFF, DATE_ADD, आदि)
  • स्टोरेज दक्षता

स्ट्रिंग तारीख कॉलम पर फंक्शन लागू करने से इंडेक्स उपयोग अक्षम हो जाता है; बड़े टेबल्स पर पहले कन्वर्ट करें।

  1. - MySQL में LIKE के साथ एकाधिक शब्दों से रिकॉर्ड कैसे फ़िल्टर करें?

    MySQL में किसी कॉलम को एकाधिक पैटर्न/शब्दों के विरुद्ध फ़िल्टर करने के लिए, RLIKE (या REGEXP) ऑपरेटर का उपयोग करें जो रेगुलर एक्सप्रेशन ऑल्टरनेशन (|) सपोर्ट करता है। यह एकाधिक LIKE शर्तों से अधिक संक्षिप्त और लचीला है। उदाहरण: SQL या Python वाले विषय खोजना डेमो टेबल बनाएं: mysql> CREATE TABLE

  1. - MySQL टेबल में विशिष्ट तारीख की घटनाओं की गिनती कैसे करें?

    MySQL में किसी DATE कॉलम में विशिष्ट तारीख की घटनाओं (occurrences) को गिनने के लिए, COUNT(*) के साथ WHERE date(column) = target_date का उपयोग करें। यह सरल, कुशल, और इंडेक्स-अनुकूल है। उदाहरण: 2019-12-11 तारीख की गिनती डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1946 (ShippingDate DATE); डेट

  1. - MySQL में DATE_ADD से तारीख में वर्ष जोड़ें

    UPDATE और DATE_ADD() से मौजूदा तारीखों में अंतराल जोड़ें मौजूदा तारीख कॉलम में वर्ष (या अन्य अंतराल) जोड़ने के लिए UPDATE के साथ DATE_ADD() का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec) mysql> insert into