# MySQL時間如何轉換時間戳
## 一、時間戳與日期時間的區別
在MySQL中,時間戳(Timestamp)和日期時間(DATETIME)是兩種不同的時間存儲格式:
1. **時間戳(TIMESTAMP)**
- 存儲從1970-01-01 00:00:00 UTC到當前時間的秒數
- 占用4字節存儲空間
- 受時區影響,會隨系統時區自動轉換
2. **日期時間(DATETIME)**
- 存儲格式為'YYYY-MM-DD HH:MM:SS'
- 占用8字節存儲空間
- 不受時區影響
## 二、時間轉時間戳的5種方法
### 方法1:UNIX_TIMESTAMP()函數
```sql
-- 將當前時間轉為時間戳
SELECT UNIX_TIMESTAMP();
-- 將指定時間轉為時間戳
SELECT UNIX_TIMESTAMP('2023-10-01 12:00:00');
注意:該函數返回的是UTC時間戳(秒級)
-- 計算兩個時間的秒數差(可作為相對時間戳)
SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NOW());
-- 處理DATETIME類型的列
SELECT UNIX_TIMESTAMP(CAST(datetime_column AS DATETIME))
FROM your_table;
-- MySQL 5.6+版本支持微秒級
SELECT UNIX_TIMESTAMP(NOW(6)) * 1000000 + MICROSECOND(NOW(6));
-- 先轉為日期再轉回時間戳(不推薦,僅作演示)
SELECT UNIX_TIMESTAMP(FROM_UNIXTIME(1696141200));
-- 基本轉換
SELECT FROM_UNIXTIME(1696141200);
-- 帶格式輸出
SELECT FROM_UNIXTIME(1696141200, '%Y-%m-%d %H:%i:%s');
-- 通過時間計算實現轉換
SELECT DATE_ADD('1970-01-01 00:00:00', INTERVAL 1696141200 SECOND);
SELECT * FROM logs
WHERE create_time >= FROM_UNIXTIME(UNIX_TIMESTAMP()-86400);
SELECT
FROM_UNIXTIME(create_timestamp, '%Y-%m-%d') AS day,
COUNT(*) AS count
FROM orders
GROUP BY day;
-- 將UTC時間戳轉為本地時區時間
SET time_zone = '+8:00';
SELECT FROM_UNIXTIME(1696141200);
范圍限制:
性能考慮:
時區問題:
CONVERT_TZ()
函數處理跨時區轉換版本差異:
通過掌握這些轉換方法,可以靈活處理MySQL中的各種時間操作需求。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。