दो मुख्य विधियाँ
MySQL में किसी DATETIME मान से 3 घंटे (या कोई अंतराल) घटाने के दो मानक तरीके हैं।
विधि 1: DATE_ADD() ऋणात्मक अंतराल के साथ
SELECT DATE_ADD(yourColumnName, INTERVAL -3 HOUR)
FROM yourTableName;
विधि 2: DATE_SUB() धनात्मक अंतराल के साथ
SELECT DATE_SUB(yourColumnName, INTERVAL 3 HOUR)
FROM yourTableName;
व्यावहारिक उदाहरण (वर्तमान समय से)
वर्तमान समय देखें
mysql> SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2018-11-30 10:13:23 |
+---------------------+
1 row in set (0.00 sec)
DATE_ADD के साथ (-3 घंटे)
mysql> SELECT DATE_ADD(NOW(), INTERVAL -3 HOUR);
+----------------------------------+
| date_add(now(), interval -3 hour)|
+----------------------------------+
| 2018-11-30 07:13:28 |
+----------------------------------+
1 row in set (0.00 sec)
DATE_SUB के साथ (3 घंटे)
mysql> SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2018-11-30 10:14:12 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_SUB(NOW(), INTERVAL 3 HOUR);
+---------------------------------+
| date_sub(now(), interval 3 hour)|
+---------------------------------+
| 2018-11-30 07:14:25 |
+---------------------------------+
1 row in set (0.00 sec)
अन्य समय इकाइयाँ
INTERVAL 3 HOUR -- 3 घंटे
INTERVAL 30 MINUTE -- 30 मिनट
INTERVAL 1 DAY -- 1 दिन
INTERVAL 2 WEEK -- 2 सप्ताह
INTERVAL 1 MONTH -- 1 महीना
INTERVAL 1 YEAR -- 1 वर्ष
INTERVAL '1 12' DAY_HOUR -- 1 दिन 12 घंटे (संयुक्त)
INTERVAL '3:30' HOUR_MINUTE -- 3 घंटे 30 मिनट
कॉलम पर उपयोग
SELECT
EventTime,
DATE_SUB(EventTime, INTERVAL 3 HOUR) AS ThreeHoursBefore
FROM Events;
कौन सा उपयोग करें?
- DATE_SUB: अधिक पठनीय, स्पष्ट इरादा (घटाना)
- DATE_ADD + ऋणात्मक: लचीला जब अंतराल चर/पैरामीटर हो (धनात्मक/ऋणात्मक दोनों संभालता है)
- दोनों समान रूप से कुशल हैं