MySQL में DATE_ADD और INTERVAL का उपयोग करके तिथि में दिन जोड़ना
MySQL में DATE_ADD() फ़ंक्शन और INTERVAL कीवर्ड का उपयोग करके आप किसी तिथि/डेटाइम में दिन, महीने, वर्ष आदि जोड़ या घटा सकते हैं।
टेबल बनाना
mysql> CREATE TABLE DemoTable (
-> DueDate DATE
-> );
Query OK, 0 rows affected (2.11 sec)
डेटा डालना
mysql> INSERT INTO DemoTable VALUES ('2019-01-21');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES ('2018-12-31');
Query OK, 1 row affected (0.47 sec)
mysql> INSERT INTO DemoTable VALUES ('2018-12-30');
Query OK, 1 row affected (0.28 sec)
mysql> INSERT INTO DemoTable VALUES ('2017-02-26');
Query OK, 1 row affected (0.47 sec)
मूल तिथियाँ
mysql> SELECT * FROM DemoTable;
+------------+
| DueDate |
+------------+
| 2019-01-21 |
| 2018-12-31 |
| 2018-12-30 |
| 2017-02-26 |
+------------+
4 rows in set (0.00 sec)
सभी तिथियों में 1 दिन जोड़ने का UPDATE क्वेरी
mysql> UPDATE DemoTable
-> SET DueDate = DATE_ADD(DueDate, INTERVAL 1 DAY);
Query OK, 4 rows affected (0.21 sec)
Rows matched: 4 Changed: 4 Warnings: 0
अपडेट के बाद तिथियाँ
mysql> SELECT * FROM DemoTable;
+------------+
| DueDate |
+------------+
| 2019-01-22 |
| 2019-01-01 | -- वर्ष परिवर्तन सही ढंग से संभाला गया
| 2018-12-31 | -- महीना परिवर्तन सही ढंग से संभाला गया
| 2017-02-27 |
+------------+
4 rows in set (0.00 sec)
DATE_ADD सिंटैक्स
DATE_ADD(date, INTERVAL expr unit)
आम INTERVAL इकाइयाँ
| इकाई | उदाहरण | विवरण |
|---|---|---|
| SECOND | INTERVAL 30 SECOND | 30 सेकंड जोड़ें |
| MINUTE | INTERVAL 45 MINUTE | 45 मिनट जोड़ें |
| HOUR | INTERVAL 2 HOUR | 2 घंटे जोड़ें |
| DAY | INTERVAL 1 DAY | 1 दिन जोड़ें |
| WEEK | INTERVAL 1 WEEK | 1 सप्ताह जोड़ें |
| MONTH | INTERVAL 3 MONTH | 3 महीने जोड़ें |
| QUARTER | INTERVAL 1 QUARTER | 1 तिमाही (3 महीने) जोड़ें |
| YEAR | INTERVAL 1 YEAR | 1 वर्ष जोड़ें |
संयुक्त अंतराल
-- 1 वर्ष 2 महीने 3 दिन जोड़ें
DATE_ADD(date, INTERVAL '1-2' YEAR_MONTH) -- YEAR_MONTH विशेष इकाई
DATE_ADD(date, INTERVAL '1 2:30:45' DAY_SECOND) -- जटिल अंतराल
घटाने के लिए DATE_SUB
-- 1 दिन घटाएं
UPDATE DemoTable SET DueDate = DATE_SUB(DueDate, INTERVAL 1 DAY);
-- या नकारात्मक अंतराल के साथ DATE_ADD
UPDATE DemoTable SET DueDate = DATE_ADD(DueDate, INTERVAL -1 DAY);
शॉर्टकट ऑपरेटर (MySQL विशिष्ट)
-- ये समतुल्य हैं:
DATE_ADD(DueDate, INTERVAL 1 DAY)
DueDate + INTERVAL 1 DAY
-- घटाने के लिए:
DueDate - INTERVAL 1 DAY
SELECT में उपयोग (बिना अपडेट किए गणना)
SELECT
DueDate AS OriginalDate,
DueDate + INTERVAL 1 DAY AS NextDay,
DueDate + INTERVAL 7 DAY AS NextWeek,
DueDate + INTERVAL 1 MONTH AS NextMonth
FROM DemoTable;
लीप वर्ष और महीना अंत संचालन
MySQL स्वचालित रूप से संभालता है:
- महीना अंत: जनवरी 31 + 1 महीना = फरवरी 28/29
- लीप वर्ष: फरवरी 28 + 1 दिन = फरवरी 29 (लीप वर्ष में)
- वर्ष अंत: दिसंबर 31 + 1 दिन = जनवरी 1 (अगला वर्ष)