在 Mysql 查询中将时间戳字段转换为日期
Raymond Peter
2023年1月30日
2022年5月13日
本教程文章将向你展示如何在 MySQL 查询中将 timestamp
字段转换为日期字段。这演示了如何在正确查询数据时使用格式。
在 MySQL 中使用日期格式转换 Timestamp
TIMESTAMP
数据类型允许你注册日期和时间。它有 19 个固定字符,可以启用从 1970 年 1 月 1 日的第一秒到 2038 年 1 月 19 日的一系列日期,恰好是 3 小时 14 分 7 秒。
DATE_FORMAT
函数将允许你从表中获取字段并将其转换为 MySQL 查询中所需的格式。以下是操作
表中的值。这记录了工厂中任何操作事件的详细信息,例如停机。
| shutdown |
| ------------------- |
| 2021-12-31 09:45:07 |
以下是一个转换示例,它将采用列 shutdown
并将其从默认格式 YYYY-MM-DD HH:MM:SS
的 timestamp
转换为格式 DD-MM
的日期-YYYY`。
CREATE TABLE operations (
user TEXT NOT NULL,
shutdown TIMESTAMP
);
INSERT INTO operations VALUES ('Mark', '2021-12-31 09:45:07');
SELECT DATE_FORMAT(operations.shutdown, '%d %m %Y')
AS 'Shutdown Date'
FROM operations
输出:
| Shutdown Date |
|:--------------|
| 31 12 2021 |
你还可以选择在最终日期格式中包含时间,方法是将%H
、%i
和%s
分别用于小时、分钟和秒值。
CREATE TABLE operations (
user TEXT NOT NULL,
shutdown TIMESTAMP
);
INSERT INTO operations VALUES ('Mark', '2021-12-31 09:45:07');
SELECT DATE_FORMAT(operations.shutdown, '%d %m %Y %h%:%i%:%s')
AS 'Shutdown Date'
FROM operations
输出:
| Shutdown Date |
|:---------------------|
| 31 12 2021 09:45:07 |
%i
符号用于分钟,因为 %m
已分配给每月数值。
在 MySQL 中使用 Unixtime
转换时间戳
如果 timestamp
的格式正确,则日期/时间格式 31 12 2021 09:45:07
可能如下所示:1640943907
。你可以使用 FROM_UNIXTIME
将数字序列转换为日期/时间格式。
CREATE TABLE operations (
user TEXT NOT NULL,
shutdown int(11)
);
INSERT INTO operations VALUES ('Mark', 1640943907);
SELECT DATE_FORMAT(FROM_UNIXTIME(operations.shutdown), '%d %m %Y %h%:%i%:%s')
AS 'Shutdown Date'
FROM operations
结果:
| Shutdown Date |
|:---------------------|
| 31 12 2021 09:45:07 |
如上所示,时间戳被转换为相同的格式,只需添加 FROM_UNIXTIME
以将数字序列转换为所需的格式。
在 MySQL 中使用 Cast 转换 Unixtime
你还可以使用 CAST
代替 DATE_FORMAT
将 UNIXTIME
格式转换为日期。
CREATE TABLE operations (
user TEXT NOT NULL,
shutdown int(11)
);
INSERT INTO operations VALUES ('Mark', 1640943907);
SELECT CAST(FROM_UNIXTIME(operations.shutdown)
AS DATE)
AS 'Shutdown Date'
FROM operations
输出:
| Shutdown Date |
|:--------------|
| 2021-12-31 |
但是,此方法限制了你根据需要设置日期格式的能力,这就是首选使用 DATE_FORMAT
的原因。