PHP 時間戳 (Timestamps) 在 Web 應用中發揮著不可替代的作用。數據庫存儲了大量的數據,如果沒有時間戳,數據的處理將會變得異常困難。在 MySQL 數據庫中,使用 TIMESTAMP 類型保存時間數據。
使用 PHP 生成時間戳通常是通過函數 time() 來完成。該函數返回當前的 Unix 時間戳,表示自 1970 年 1 月 1 日 00:00:00 GMT 以來的秒數。
$timestamp = time(); echo $timestamp; // 輸出 1593353103
我們也可以指定一個日期時間返回時間戳。date函數可以將日期格式化為字符串,或將 Unix 時間戳轉換為日期格式。strtotime函數可以將字符串型日期轉換為時間戳。
$dateStr = '2020-06-28 18:00:00'; $timestamp = strtotime($dateStr); echo $timestamp; // 輸出 1593356400
插入時間戳到 MySQL 數據庫,可以在 INSERT 語句中使用 NOW() 函數,MySQL 將自動插入服務器當前的時間。同時,將 TIMESTAMP 類型設置為 DEFAULT CURRENT_TIMESTAMP,每當有記錄插入到表中,都自動插入當前時間戳。
CREATE TABLEusers
(id
int(11) NOT NULL AUTO_INCREMENT,name
varchar(50) NOT NULL,created_at
timestamp DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id
) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; INSERT INTOusers
(name
) VALUES('Alice'); SELECT * FROMusers
;
以上代碼段會創建一個名為 users 的表格,包含 id(主鍵), name 和 created_at (記錄創建時間, 默認當前時間戳) 字段。插入一條記錄時,只需要設置 name 字段:插入成功后,執行查詢語句,將返回所有表中的記錄,顯示出 name 和 created_at 兩個字段。
查詢和更新 TIMESTAMP 字段時,只需要使用 MySQL 內置的日期函數:YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() 等:
SELECT COUNT(*) ASacount
FROMusers
WHERE YEAR(created_at
)>=2020; UPDATEusers
SETcreated_at
= DATE_ADD(created_at, INTERVAL 1 DAY) WHERE id=1001;
以上代碼會查詢 users 表格中 2020 年及之后創建的記錄數。更新 created_at 字段時,會將 id 為 1001 的記錄的 created_at 字段值增加一天。
PHP 時間戳、日期函數和 MySQL TIMESTAMP 數據類型一起,可以輕松方便的管理時間數據。無論是存儲、查詢還是更新,都可以自由地操作,以滿足各種 Web 應用需求。