MySQL में TIMEDIFF() और TIME_FORMAT() का उपयोग करके दो DATETIME कॉलम का समय अंतर निकालना
दो DATETIME या TIME कॉलम के बीच का अंतर निकालने के लिए TIMEDIFF() फ़ंक्शन का उपयोग करें, और TIME_FORMAT() से मनचाहे प्रारूप में प्रदर्शित करें।
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना
mysql> CREATE TABLE DemoTable624 (
PunchIn DATETIME,
PunchOut DATETIME
);
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable624 VALUES
('2019-07-14 12:10:00', '2019-07-14 12:50:00'),
('2019-07-14 11:00:00', '2019-07-14 11:30:00');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable624;
आउटपुट:
+---------------------+---------------------+
| PunchIn | PunchOut |
+---------------------+---------------------+
| 2019-07-14 12:10:00 | 2019-07-14 12:50:00 |
| 2019-07-14 11:00:00 | 2019-07-14 11:30:00 |
+---------------------+---------------------+
2 rows in set (0.00 sec)
समय अंतर प्राप्त करना (फॉर्मेट के साथ)
mysql> SELECT TIME_FORMAT(TIMEDIFF(PunchIn, PunchOut), '%H hrs, %i min.')
FROM DemoTable624;
आउटपुट:
+-----------------------------------------------------------+
| TIME_FORMAT(TIMEDIFF(PunchIn, PunchOut), '%H hrs, %i min.') |
+-----------------------------------------------------------+
| -00 hrs, 40 min. |
| -00 hrs, 30 min. |
+-----------------------------------------------------------+
2 rows in set (0.00 sec)
⚠️ महत्वपूर्ण नोट: TIMEDIFF(PunchIn, PunchOut) = PunchIn - PunchOut करता है। चूंकि PunchIn < PunchOut है, परिणाम ऋणात्मक है।
सही क्रम (धनात्मक अंतर के लिए)
SELECT TIME_FORMAT(TIMEDIFF(PunchOut, PunchIn), '%H hrs, %i min.') AS Duration
FROM DemoTable624;
आउटपुट:
+------------------+
| Duration |
+------------------+
| 00 hrs, 40 min. |
| 00 hrs, 30 min. |
+------------------+
TIMEDIFF वाक्यविन्यास
TIMEDIFF(time1, time2) -- time1 - time2 लौटाता है (TIME टाइप)
TIME_FORMAT विशिष्टकर्ता
| विशिष्टकर्ता | विवरण |
|---|---|
| %H | घंटा (00-23) |
| %h | घंटा (01-12) |
| %i | मिनट (00-59) |
| %s | सेकंड (00-59) |
| %f | माइक्रोसेकंड (000000-999999) |
| %p | AM/PM |
अन्य उपयोगी फ़ंक्शन
-- सेकंड में अंतर
SELECT TIMESTAMPDIFF(SECOND, PunchIn, PunchOut) AS seconds_diff FROM DemoTable624;
-- मिनट में अंतर
SELECT TIMESTAMPDIFF(MINUTE, PunchIn, PunchOut) AS minutes_diff FROM DemoTable624;
-- घंटे में अंतर
SELECT TIMESTAMPDIFF(HOUR, PunchIn, PunchOut) AS hours_diff FROM DemoTable624;
-- TIME_TO_SEC के साथ
SELECT TIME_TO_SEC(TIMEDIFF(PunchOut, PunchIn)) AS total_seconds FROM DemoTable624;
रात भर की शिफ्ट संभालना (दिन बदलना)
-- TIMEDIFF स्वचालित रूप से दिन परिवर्तन संभालता है
INSERT INTO DemoTable624 VALUES('2019-07-14 22:00:00', '2019-07-15 06:00:00');
SELECT TIMEDIFF(PunchOut, PunchIn) FROM DemoTable624 WHERE Id = 3; -- 08:00:00
काम के घंटे गणना (ब्रेक घटाकर)
SELECT
TIME_FORMAT(
TIMEDIFF(PunchOut, PunchIn) - INTERVAL 1 HOUR, -- 1 घंटा ब्रेक घटाएं
'%H hrs %i min'
) AS NetWorkHours
FROM DemoTable624;