MySQL 如何将MySQL表中存储的时期(epoch)转换为可读日期
在MySQL中,我们常常会将日期存储为epoch值。秒是自1970年1月1日00:00:00 GMT以来的整数计数。虽然存储epoch格式方便,但是在实际应用中,我们经常需要将其转换为可读的日期格式。
下面将介绍如何将MySQL表中存储的时期(epoch)转换为可读日期。
阅读更多:MySQL 教程
准备工作
在代码实现中,我们需要用到MySQL的UNIX_TIMESTAMP()函数将日期转换为epoch值,以及FROM_UNIXTIME()函数将epoch值转换为可读日期格式。
示例代码
以下是一个表格的简单示例,它包含了一个epoch时间戳和一个日期:
CREATE TABLE `test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`epoch` int(11) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `test_table` (`epoch`, `date`) VALUES (1628805644, '2021-08-13');
要将epoch值转换为可读日期格式,我们可以使用FROM_UNIXTIME()函数:
SELECT FROM_UNIXTIME(`epoch`) AS `date` FROM `test_table`;
执行此查询后,我们将会得到如下结果:
+---------------------+
| date |
+---------------------+
| 2021-08-13 09:34:04 |
+---------------------+
我们也可以将FROM_UNIXTIME()函数与其他SQL函数一起使用。例如,要选择所有尚未过去的日期:
SELECT * FROM `test_table` WHERE `date` > FROM_UNIXTIME(`epoch`);
此查询将选择只有2021年8月13日以后的行。
另外,我们也可以将FROM_UNIXTIME()函数与DATE_FORMAT()函数一起使用,以控制输出日期的格式:
SELECT DATE_FORMAT(FROM_UNIXTIME(`epoch`), '%m/%d/%Y %h:%i %p') AS `date` FROM `test_table`;
执行此查询后,我们将得到如下结果:
+---------------------+
| date |
+---------------------+
| 08/13/2021 09:34 AM |
+---------------------+
结论
使用MySQL的FROM_UNIXTIME()和UNIX_TIMESTAMP()函数,将存储在epoch格式中的日期转换为易于阅读的日期格式非常容易。我们可以使用FROM_UNIXTIME()函数将epoch值转换为日期,并将结果格式化为所需的格式。