在 Mysql 查詢中將時間戳欄位轉換為日期
Raymond Peter
2023年10月8日
本教程文章將向你展示如何在 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
的原因。