將MySQL中一長串的時間資料轉換成日期時間

在 php+MySQL 的程式,例如:xoops, Joomla…等等,打開 MySQL 資料庫查看存放時間的欄位,都是長長一大串令人不知所措的數字,難以判斷時間。

unixtime

這個不是經過加密的資料。這一長串數字的意義,代表「經過的秒數」,是自從1970/01/01 08:00:00 起,所經過的秒數 。

用1970/01/01 08:00:00 加上那串「經過的秒數」,就可以得到系統計錄的日期時間。例如:user_regdate 使用者註冊時間,欄位是 1260360000 ,將1970/01/01 08:00:00 加上 1260360000 秒,就是 2009/12/9 12:00:00 。

觀念了解了,但是要將資料撈出來,不管是寫程式還是寫報表,都面臨一個頭痛的問題:日期時間的加減。必須將 1970/01/01 08:00:00 加上欄位中秒數的值,再轉換回來平常所用的日期時間格式,光想到要寫這麼長的sql語法就頭痛。

其實 MySQL 就有現成的函數可用了。


MySQL 記錄時間是用函數UNIX_TIMESTAMP() ,將返回的個Unix時間戳記(從’1970-01-01 00:00:00’GMT開始的秒數)寫入欄位中。

相對的函數 FROM_UNIXTIME(unix_timestamp) 會以’YYYY-MM-DD HH:MM:SS’或 YYYYMMDDHHMMSS 的格式返回unix_timestamp參數所表示的值。

所以在sql語法中下 select FROM_UNIXTIME(your_field) 的命令,就可以撈出記錄的日期時間。

以上面的例子來說,select FROM_UNIXTIME(user_regdate)就可以用容易閱讀的 ‘YYYY-MM-DD HH:MM:SS’ 格式撈出使用者註冊的時間了。

One thought on “將MySQL中一長串的時間資料轉換成日期時間

  1. 讚!
    寫的好!
    找很久了!
    收下來用先!
    感謝版主用心!

發表迴響