CONCAT() और समय फंक्शन का उपयोग करें
दो DATETIME मानों के अंतर को "दिन घंटे मिनट" फॉर्मेट में दिखाने के लिए TIMEDIFF(), HOUR(), MINUTE() और CONCAT() का संयोजन उपयोग करें।
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE convertTimeDifferenceDemo (
Id INT NOT NULL AUTO_INCREMENT,
StartDate DATETIME,
EndDate DATETIME,
PRIMARY KEY(Id)
);
mysql> INSERT INTO convertTimeDifferenceDemo(StartDate, EndDate)
VALUES(DATE_ADD(NOW(), INTERVAL -3 HOUR), DATE_ADD(NOW(), INTERVAL 3 HOUR));
mysql> INSERT INTO convertTimeDifferenceDemo(StartDate, EndDate)
VALUES(DATE_ADD(NOW(), INTERVAL -2 HOUR), DATE_ADD(NOW(), INTERVAL 2 HOUR));
mysql> INSERT INTO convertTimeDifferenceDemo(StartDate, EndDate)
VALUES('2018-04-05 12:30:35', '2018-05-17 14:30:50');
mysql> INSERT INTO convertTimeDifferenceDemo(StartDate, EndDate)
VALUES('2017-10-11 11:20:30', '2017-12-17 15:21:55');
डेटा
+----+---------------------+---------------------+ | Id | StartDate | EndDate | +----+---------------------+---------------------+ | 1 | 2019-01-28 20:55:33 | 2019-01-29 02:55:33 | | 2 | 2019-01-28 21:57:42 | 2019-01-29 01:57:42 | | 3 | 2018-04-05 12:30:35 | 2018-05-17 14:30:50 | | 4 | 2017-10-11 11:20:30 | 2017-12-17 15:21:55 | +----+---------------------+---------------------+
क्वेरी: दिन, घंटे, मिनट फॉर्मेट में अंतर
mysql> SELECT CONCAT(
FLOOR(HOUR(TIMEDIFF(StartDate, EndDate)) / 24), ' DAYS ',
MOD(HOUR(TIMEDIFF(StartDate, EndDate)), 24), ' HOURS ',
MINUTE(TIMEDIFF(StartDate, EndDate)), ' MINUTES'
) AS DESCRIPTION
FROM convertTimeDifferenceDemo;
आउटपुट
+------------------------------+ | DESCRIPTION | +------------------------------+ | 0 DAYS 6 HOURS 0 MINUTES | | 0 DAYS 4 HOURS 0 MINUTES | | 34 DAYS 22 HOURS 59 MINUTES | | 34 DAYS 22 HOURS 59 MINUTES | +------------------------------+
व्याख्या
TIMEDIFF(StartDate, EndDate)— समय अंतर लौटाता है (नकारात्मक हो सकता है)।HOUR(...)— अंतर के कुल घंटे (दिनों सहित)।FLOOR(HOUR(...) / 24)— पूर्ण दिनों की संख्या।MOD(HOUR(...), 24)— शेष घंटे (0-23)।MINUTE(...)— शेष मिनट।CONCAT(...)— मानव-पठनीय स्ट्रिंग में जोड़ता है।
सुधार: सेकंड शामिल करना
SELECT CONCAT(
FLOOR(HOUR(TIMEDIFF(StartDate, EndDate)) / 24), 'd ',
MOD(HOUR(TIMEDIFF(StartDate, EndDate)), 24), 'h ',
MINUTE(TIMEDIFF(StartDate, EndDate)), 'm ',
SECOND(TIMEDIFF(StartDate, EndDate)), 's'
) AS Duration FROM convertTimeDifferenceDemo;
नोट
TIMEDIFF का परिणाम TIME प्रकार है जिसकी सीमा -838:59:59 से 838:59:59 है। बहुत बड़े अंतराल के लिए TIMESTAMPDIFF() उपयोग करें।