2010-07-27 63 views
3

我有一個看起來像1003029303的日期,我想這就是所謂的 linux UNIX時間戳。正確的方法來保存1970年類型的日期

什麼格式,我應該將其保存在MySQL數據庫?我不認爲int(10)是正確的。

`gottime` int(10) 
+2

它更準確地稱爲UNIX時間戳。但我只是挑剔。 – BoltClock 2010-07-27 05:07:33

回答

3

時間戳是簡單的整數。你可以像那樣存儲它。

您也可以使用MySQL的TIMESTAMP數據類型與FROM_UNIXTIME()和UNIX_TIMESTAMP()函數來轉換和從MySQL的格式。

$query = "UPDATE table SET 
    datetimefield = FROM_UNIXTIME($phpdate) 
    WHERE..."; 

$query = "SELECT UNIX_TIMESTAMP(datetimefield) 
    FROM table WHERE..."; 
9

我認爲你試圖拯救生日或類似的東西。 DATETIME格式是存儲過去日期的正確方法。 unix時間戳只能用於當前不超過30-40 +/-年的日期項目。

MySQL的DATETIME格式爲YYYY-MM-DD HH:MM:SS。

4

你不應該在數據庫中存儲UNIX時間戳。主要是因爲MySQL(除其他品牌)數據庫包括日期函數來計算幾乎任何類型的日期的功能,你能想到的。然而,如果你把它存儲爲一個時間戳,你就必須要麼,先轉換的MySQL中的時間戳,然後格式化,或使用PHP的date()函數。

5

我建議使用DATETIME數據類型,然後使用FROM_UNIXTIME()UNIX_TIMESTAMP()功能,根據需要轉換:

SELECT FROM_UNIXTIME(1003029303); 
+---------------------------+ 
| FROM_UNIXTIME(1003029303) | 
+---------------------------+ 
| 2001-10-14 05:15:03  | 
+---------------------------+ 
1 row in set (0.08 sec) 


SELECT UNIX_TIMESTAMP('2001-10-14 05:15:03'); 
+---------------------------------------+ 
| UNIX_TIMESTAMP('2001-10-14 05:15:03') | 
+---------------------------------------+ 
|       1003029303 | 
+---------------------------------------+ 
1 row in set (0.00 sec) 
2

就個人而言,我存儲日期在使用DATETIME字段類型MySQL數據庫。例如,2010-07-27 09:30:09

它比時間戳更容易閱讀,如果您需要將其轉換爲UNIX時間戳,您可以使用PHP的strtotime()函數進行操作。

相關問題