MySQL में DATETIME/TIMESTAMP कॉलम को यूनिक्स टाइमस्टैम्प (सेकंड में, 1970-01-01 से) में बदलने के लिए UNIX_TIMESTAMP() फंक्शन का उपयोग करें।
सिंटैक्स
SELECT UNIX_TIMESTAMP(yourDatetimeColumn) AS unix_timestamp FROM yourTableName;
उदाहरण के साथ समझें
टेबल बनाएं:
CREATE TABLE DatetimeToInteger (
Id INT NOT NULL AUTO_INCREMENT,
ArrivalTime DATETIME,
PRIMARY KEY(Id)
);
विभिन्न दिनांक-समय डालें:
INSERT INTO DatetimeToInteger(ArrivalTime) VALUES(NOW());
INSERT INTO DatetimeToInteger(ArrivalTime) VALUES(CURDATE());
INSERT INTO DatetimeToInteger(ArrivalTime) VALUES('2017-09-21 13:10:55');
INSERT INTO DatetimeToInteger(ArrivalTime) VALUES(DATE_ADD(NOW(), INTERVAL 3 YEAR));
सभी रिकॉर्ड देखें:
SELECT * FROM DatetimeToInteger;
आउटपुट:
+----+---------------------+
| Id | ArrivalTime |
+----+---------------------+
| 1 | 2019-01-22 15:12:45 |
| 2 | 2019-01-22 00:00:00 |
| 3 | 2017-09-21 13:10:55 |
| 4 | 2022-01-22 15:14:32 |
+----+---------------------+
DATETIME को INTEGER (यूनिक्स टाइमस्टैम्प) में बदलें
SELECT UNIX_TIMESTAMP(ArrivalTime) AS DateTimeToIntegerDemo FROM DatetimeToInteger;
परिणाम:
+-----------------------+
| DateTimeToIntegerDemo |
+-----------------------+
| 1548150165 |
| 1548095400 |
| 1505979655 |
| 1642844672 |
+-----------------------+
व्याख्या
1548150165= 2019-01-22 15:12:45 UTC1548095400= 2019-01-22 00:00:00 UTC (मध्यरात्रि)1505979655= 2017-09-21 13:10:55 UTC1642844672= 2022-01-22 15:14:32 UTC
व्युत्क्रम: INTEGER से DATETIME
SELECT FROM_UNIXTIME(1548150165); -- 2019-01-22 15:12:45
टाइमज़ोन ध्यान दें
UNIX_TIMESTAMP()सत्र टाइमज़ोन का उपयोग करता है- UTC में बदलने के लिए:
CONVERT_TZ()या सर्वर टाइमज़ोन सेट करें SET time_zone = '+00:00';फिर UNIX_TIMESTAMP() UTC देगा
अन्य उपयोग
-- वर्तमान यूनिक्स टाइमस्टैम्प
SELECT UNIX_TIMESTAMP();
-- विशिष्ट स्ट्रिंग से
SELECT UNIX_TIMESTAMP('2024-01-15 10:30:00');
-- WHERE क्लॉज में (इंडेक्स फ्रेंडली नहीं)
SELECT * FROM events WHERE UNIX_TIMESTAMP(event_time) > 1700000000;
-- बेहतर: तारीख की तुलना करें
SELECT * FROM events WHERE event_time > FROM_UNIXTIME(1700000000);
रेंज और सीमाएं
- 32-बिट सिस्टम: 1970-01-01 से 2038-01-19 (Y2K38 समस्या)
- 64-बिट MySQL: बहुत बड़ी रेंज (साल 292 बिलियन तक)
- MySQL 8.0+ 64-बिट पर पूर्ण समर्थन
नोट
UNIX_TIMESTAMP()BIGINT लौटाता है- NULL इनपुट → NULL आउटपुट
- अमान्य दिनांक → NULL + चेतावनी
- प्रदर्शन: WHERE में फंक्शन इंडेक्स उपयोग रोकता है