MySQL-এ UNIX_TIMESTAMP() ফাংশনের রিটার্ন টাইপ হলো সাইনড ইন্টিজার (সাধারণত INT(11) বা BIGINT ভেরিয়েন্ট অনুযায়ী)। তাই ইউনিক্স টাইমস্ট্যাম্প সংরক্ষণের জন্য INT বা BIGINT ডেটা টাইপ ব্যবহার করুন।
কারণ
- ইন্টিজার রেঞ্জ (-2147483648 থেকে 2147483647) ১৯৭০-২০৩৮ পর্যন্ত কভার করে (Y2K38 সমস্যা রয়েছে)।
BIGINT(8 বাইট) ব্যবহার করলে ২৯২ বৎসর পর্যন্ত কভারেজ পাওয়া যায়।- ইন্টিজার কন্ডিশন চেক (
>,<=) ও ইন্ডেক্সিং খুব দ্রুত।
উদাহরণ: DATETIME → UNIX_TIMESTAMP
CREATE TABLE `UnixTime` (`DueTime` DATETIME);
INSERT INTO `UnixTime` VALUES (NOW()), ('2010-10-14'), ('2020-09-24');
SELECT `DueTime`, UNIX_TIMESTAMP(`DueTime`) AS `UnixTS` FROM `UnixTime`;
ফলাফল:
+---------------------+------------+
| DueTime | UnixTS |
+---------------------+------------+
| 2018-12-19 10:07:11 | 1545194231 |
| 2010-10-14 00:00:00 | 1286994600 |
| 2020-09-24 00:00:00 | 1600885800 |
+---------------------+------------+
সুপারিশ: নতুন প্রজেক্টে BIGINT কলামে UNIX_TIMESTAMP সংরক্ষণ করুন যাতে ২০৩৮ সালের পরে সমস্যা না হয়।