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

Raymond Peter 2023年1月30日 2022年5月13日
  1. 在 MySQL 中使用日期格式转换 Timestamp
  2. 在 MySQL 中使用 Unixtime 转换时间戳
  3. 在 MySQL 中使用 Cast 转换 Unixtime
在 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`。

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_FORMATUNIXTIME 格式转换为日期。

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 的原因。

相关文章 - MySQL Timestamp