在多時寫程式都會用 Unix Timestamp 儲存時間,好處是可以很簡單作日期計算,以及用不同格式顯示日期。
以前儲存在 MySQL 的日期時間,會擷取後用 PHP 的 date() 函式顯示,但 MySQL 已經內置了用作換算 Unix Timestamp 的功能,用起來很方便,以下記錄一下用法。
UNIX_TIMESTAMP() -- 取得目錄 Unix Timestamp:
1 |
SELECT UNIX_TIMESTAMP(NOW()) |
以前習慣在 PHP 用 time() 函式插入 Unix Timestamp 到 MySQL,在 SQL Query 裡面用 MySQL 的 UNIX_TIMESTAMP() 可以達到同樣效果,而且更加直接,例如有 mytable 這個資料表:
1 2 3 4 5 |
CREATE TABLE `mytable` ( `id` int(10) NOT NULL, `name` varchar(100) NOT NULL, `date` int(10) NOT NULL ); |
插入資料時用 UNIX_TIMESTAMP() 函式插入 Unix Timestamp:
1 |
INSERT INTO mytable VALUES(1, 'My Name', UNIX_TIMESTAMP(now())); |
FROM_UNIXTIME() -- 將 Unix Timestamp 轉換成日期格式:
例如上面 mytable 資料表的 date 欄位儲存了 Unix Timestamp, 想從 MySQL 擷取的資料直接顯示日期格式 dd-mm-yyyy hh:ii, 可以這樣做:
1 |
select id, name, FROM_UNIXTIME(`date`, %d-%m-%Y %h:%i) from mytable; |