CURDATE() के साथ डेट तुलना करके स्टेटस अपडेट करना
वर्तमान तारीख से पहले या बराबर की एक्सपायरी डेट वाले प्रोडक्ट्स का स्टेटस 1 पर सेट करने के लिए UPDATE के साथ CURDATE() का उपयोग करें।
मान लें वर्तमान तारीख है 2019-08-20।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
ProductStatus TINYINT(1),
ProductExpiryDate DATE
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (0, '2019-06-12'); mysql> INSERT INTO DemoTable VALUES (0, '2019-10-11'); mysql> INSERT INTO DemoTable VALUES (0, '2018-07-24'); mysql> INSERT INTO DemoTable VALUES (0, '2018-09-05');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+---------------+-------------------+ | ProductStatus | ProductExpiryDate | +---------------+-------------------+ | 0 | 2019-06-12 | | 0 | 2019-10-11 | | 0 | 2018-07-24 | | 0 | 2018-09-05 | +---------------+-------------------+
वर्तमान तारीख (2019-08-20) से पहले या बराबर की एक्सपायरी डेट वाले रिकॉर्ड्स के लिए ProductStatus = 1 सेट करें:
mysql> UPDATE DemoTable
SET ProductStatus = 1
WHERE ProductExpiryDate <= CURDATE();
आउटपुट: Query OK, 3 rows affected (Rows matched: 3, Changed: 3)
टेबल रिकॉर्ड्स फिर से जांचें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+---------------+-------------------+ | ProductStatus | ProductExpiryDate | +---------------+-------------------+ | 1 | 2019-06-12 | | 0 | 2019-10-11 | | 1 | 2018-07-24 | | 1 | 2018-09-05 | +---------------+-------------------+
व्याख्या:
- CURDATE(): वर्तमान तारीख लौटाता है (2019-08-20)
- ProductExpiryDate <= CURDATE(): एक्सपायरी डेट आज या पहले है
- 2019-06-12, 2018-07-24, 2018-09-05 → सभी 2019-08-20 से पहले हैं → Status = 1
- 2019-10-11 → भविष्य में है → Status = 0 (अपरिवर्तित)
व्यावहारिक उपयोग: एक्सपायर्ड प्रोडक्ट्स फ्लैग करना, ओवरड्यू टास्क्स मार्क करना, एक्सपायर्ड सब्सक्रिप्शन निष्क्रिय करना।
नोट: यदि ProductStatus पहले से 1 है, तो MySQL उसे "बदला हुआ" नहीं मानेगा (Changed काउंट में नहीं गिना जाएगा)।