在 Mysql 查询中将时间戳字段转换为日期

本教程文章将向你展示如何在 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:SStimestamp 转换为格式 DD-MM 的日期-YYYY`。

CREATETABLEoperations(userTEXTNOTNULL,shutdownTIMESTAMP);INSERTINTOoperationsVALUES('Mark','2021-12-31 09:45:07');SELECTDATE_FORMAT(operations.shutdown,'%d %m %Y')AS'Shutdown Date'FROMoperations

输出:

| Shutdown Date |
|:--------------|
|  31 12 2021   |

你还可以选择在最终日期格式中包含时间,方法是将%H%i%s 分别用于小时、分钟和秒值。

CREATETABLEoperations(userTEXTNOTNULL,shutdownTIMESTAMP);INSERTINTOoperationsVALUES('Mark','2021-12-31 09:45:07');SELECTDATE_FORMAT(operations.shutdown,'%d %m %Y %h%:%i%:%s')AS'Shutdown Date'FROMoperations

输出:

|    Shutdown Date     |
|:---------------------|
|  31 12 2021 09:45:07 |

%i 符号用于分钟,因为 %m 已分配给每月数值。

在 MySQL 中使用 Unixtime 转换时间戳

如果 timestamp 的格式正确,则日期/时间格式 31 12 2021 09:45:07 可能如下所示:1640943907。你可以使用 FROM_UNIXTIME 将数字序列转换为日期/时间格式。

CREATETABLEoperations(userTEXTNOTNULL,shutdownint(11));INSERTINTOoperationsVALUES('Mark',1640943907);SELECTDATE_FORMAT(FROM_UNIXTIME(operations.shutdown),'%d %m %Y %h%:%i%:%s')AS'Shutdown Date'FROMoperations

结果:

|    Shutdown Date     |
|:---------------------|
|  31 12 2021 09:45:07 |

如上所示,时间戳被转换为相同的格式,只需添加 FROM_UNIXTIME 以将数字序列转换为所需的格式。

在 MySQL 中使用 Cast 转换 Unixtime

你还可以使用 CAST 代替 DATE_FORMATUNIXTIME 格式转换为日期。

CREATETABLEoperations(userTEXTNOTNULL,shutdownint(11));INSERTINTOoperationsVALUES('Mark',1640943907);SELECTCAST(FROM_UNIXTIME(operations.shutdown)ASDATE)AS'Shutdown Date'FROMoperations

输出:

| Shutdown Date |
|:--------------|
|  2021-12-31   |

但是,此方法限制了你根据需要设置日期格式的能力,这就是首选使用 DATE_FORMAT 的原因。