MySQL में दो DATETIME मानों के बीच अंतर की गणना
MySQL में TIMESTAMPDIFF() फ़ंक्शन दो डेटाइम मानों के बीच निर्दिष्ट इकाई (सेकंड, मिनट, घंटे, दिन, आदि) में अंतर लौटाता है। DATEDIFF() के विपरीत जो केवल दिन लौटाता है, TIMESTAMPDIFF लचीला है।
टेबल बनाना
mysql> CREATE TABLE DemoTable (
-> DueDatetime1 DATETIME,
-> DueDatetime2 DATETIME
-> );
Query OK, 0 rows affected (0.86 sec)
डेटा डालना
mysql> INSERT INTO DemoTable VALUES ('2019-10-26 19:49:00', '2019-10-26 17:49:00');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES ('2019-10-26 08:00:00', '2019-10-26 13:00:00');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES ('2019-10-26 06:50:00', '2019-10-26 12:50:00');
Query OK, 1 row affected (0.68 sec)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable;
+---------------------+---------------------+
| DueDatetime1 | DueDatetime2 |
+---------------------+---------------------+
| 2019-10-26 19:49:00 | 2019-10-26 17:49:00 |
| 2019-10-26 08:00:00 | 2019-10-26 13:00:00 |
| 2019-10-26 06:50:00 | 2019-10-26 12:50:00 |
+---------------------+---------------------+
3 rows in set (0.00 sec)
मिनटों में अंतर की गणना (निरपेक्ष मान)
mysql> SELECT ABS(TIMESTAMPDIFF(MINUTE, DueDatetime1, DueDatetime2))
-> FROM DemoTable;
परिणाम
+------------------------------------------------------+
| abs(timestampdiff(minute,DueDatetime1,DueDatetime2)) |
+------------------------------------------------------+
| 120 |
| 300 |
| 360 |
+------------------------------------------------------+
3 rows in set (0.00 sec)
TIMESTAMPDIFF सिंटैक्स
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
परिणाम = datetime_expr2 - datetime_expr1 (दूसरा घटा पहला)
समर्थित इकाइयाँ (unit)
| इकाई | विवरण |
|---|---|
| MICROSECOND | माइक्रोसेकंड |
| SECOND | सेकंड |
| MINUTE | मिनट |
| HOUR | घंटे |
| DAY | दिन |
| WEEK | सप्ताह |
| MONTH | महीने |
| QUARTER | तिमाही |
| YEAR | वर्ष |
उदाहरण: विभिन्न इकाइयों में अंतर
SELECT
TIMESTAMPDIFF(SECOND, dt1, dt2) AS Seconds,
TIMESTAMPDIFF(MINUTE, dt1, dt2) AS Minutes,
TIMESTAMPDIFF(HOUR, dt1, dt2) AS Hours,
TIMESTAMPDIFF(DAY, dt1, dt2) AS Days
FROM DemoTable;
ABS() का उपयोग क्यों?
TIMESTAMPDIFF ऋणात्मक मान लौटा सकता है यदि पहला डेटाइम दूसरे से बाद का है। ABS() निरपेक्ष मान सुनिश्चित करता है।
DATEDIFF vs TIMESTAMPDIFF
| फ़ंक्शन | लौटाता है | इकाइयाँ | तर्क क्रम |
|---|---|---|---|
| DATEDIFF(d1, d2) | दिन (पूर्णांक) | केवल दिन | d1 - d2 |
| TIMESTAMPDIFF(u, d1, d2) | निर्दिष्ट इकाई में अंतर | कई | d2 - d1 |
नोट: तर्क क्रम अलग है!
मानव-पठनीय अवधि प्रारूप
SELECT
CONCAT(
TIMESTAMPDIFF(HOUR, dt1, dt2), 'h ',
TIMESTAMPDIFF(MINUTE, dt1, dt2) % 60, 'm ',
TIMESTAMPDIFF(SECOND, dt1, dt2) % 60, 's'
) AS Duration
FROM DemoTable;