MySQL में UNIX_TIMESTAMP() फंक्शन से दो टाइमस्टैम्प कॉलम का अंतर सेकंड में प्राप्त करना
सिंटैक्स:
SELECT UNIX_TIMESTAMP(yourColumnName1) - UNIX_TIMESTAMP(yourColumnName2) AS anyVariableName FROM yourTableName;
कैसे काम करता है:
UNIX_TIMESTAMP(datetime)→ यूनिक्स एपॉक (1970-01-01) से सेकंड की संख्या- दोनों को सेकंड में बदलकर घटाने पर अंतर सेकंड में मिलता है
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE DifferenceInSeconds (
-> FirstTimestamp TIMESTAMP,
-> SecondTimestamp TIMESTAMP
-> );
Query OK, 0 rows affected (0.93 sec)
2. डेटा डालें:
mysql> INSERT INTO DifferenceInSeconds VALUES('2012-12-12 13:16:55','2012-12-12 13:13:55');
mysql> INSERT INTO DifferenceInSeconds VALUES('2014-10-11 12:15:50','2014-10-11 12:13:50');
mysql> INSERT INTO DifferenceInSeconds VALUES('2018-12-14 13:30:53','2018-12-14 13:27:53');
3. अंतर निकालें:
mysql> SELECT UNIX_TIMESTAMP(FirstTimestamp) - UNIX_TIMESTAMP(SecondTimestamp) AS Seconds
-> FROM DifferenceInSeconds;
+---------+ | Seconds | +---------+ | 180 | | 120 | | 180 | +---------+ 3 rows in set (0.00 sec)
समस्या: कौन सा टाइमस्टैम्प बड़ा है पता नहीं?
अगर पहला छोटा है, तो परिणाम नेगेटिव होगा।
समाधान: ABS() फंक्शन उपयोग करें
SELECT ABS(UNIX_TIMESTAMP(FirstTimestamp) - UNIX_TIMESTAMP(SecondTimestamp)) AS Seconds FROM DifferenceInSeconds;
टेस्ट: पहला टाइमस्टैम्प छोटा वाला रिकॉर्ड जोड़ें:
mysql> INSERT INTO DifferenceInSeconds VALUES('2018-12-14 13:26:53','2018-12-14 13:31:53');
बिना ABS():
+---------+ | Seconds | +---------+ | 180 | | 120 | | 180 | | -300 | ← नेगेटिव +---------+
ABS() के साथ:
+---------+ | Seconds | +---------+ | 180 | | 120 | | 180 | | 300 | ← पॉजिटिव +---------+
अन्य समय अंतर फंक्शन:
| फंक्शन | लौटाता है | उदाहरण |
|---|---|---|
TIMESTAMPDIFF(SECOND, t1, t2) | सेकंड में अंतर (साइन सहित) | सबसे सटीक, यूनिट चुन सकते हैं |
TIMEDIFF(t1, t2) | TIME टाइप में अंतर | '03:30:00' फॉर्मेट |
DATEDIFF(d1, d2) | दिनों में अंतर | डेटा भाग केवल |
सुझाव:
TIMESTAMPDIFF(SECOND, col1, col2) अधिक सटीक और पठनीय है — UNIX_TIMESTAMP के बजाय इसका उपयोग करें।