2014-09-05 30 views
0

創建$ timeStamp = time(); 我想將它存儲在'timeStamp'db列中。PHP時間()在MySQL中存儲

我的問題雖然是:

什麼是在MySQL就此成立?

它是一個int嗎?長度/值是多少?足夠了嗎?

我也讀過關於它是無符號的各種線程,這是否重要?

我正在使用time();因爲我還希望將其用作XML屬性中的特定圖庫ID,以便如果用戶更改其圖庫,則會更新數據庫中的'timeStamp'字段,從而在每次生成XML時創建一個新的圖庫ID。

在此先感謝。

+0

在MySql中有一個DATETIME類型來存儲日期 – 2014-09-05 16:19:03

回答

0

PHP的time()值只是一個整數。使用標準的mysql int來存儲它。 「長度」字段是不相關的。 int(1)和int(234234234234234)將在內部佔用完全相同的存儲空間 - 4個字節。 (x)號碼純粹是爲了顯示目的。 int(1)只會在您選擇該值時顯示一位數字,即使內部存儲的號碼中有其數字。

+0

謝謝馬克!我認爲它在我設置時默認爲(10),這樣可以保留或刪除它。此外,我將需要全部輸入,因爲我將每次都進行比較。 – 2014-09-05 16:23:51

+0

如果嘗試插入大於定義大小的值,會發生什麼情況?我認爲所定義的數據大小存在一些限制。目前無法測試。內部存儲大小可能相同,但我認爲可能還有更多。嘗試使用int(1)我認爲它會截斷或舍入您的時間戳 – 2014-09-05 16:32:39

+0

如果存在這樣的約束,那麼使用unsigned int將允許您的值增加兩倍。那麼這就成爲一個問題,這些日期值可能會在將來有多遠。 – 2014-09-05 16:34:57

0

沒關係。

但是,如果您想要自動更新列,則需要使用TIMESTAMP。

UNSIGNED INT:您需要處理時區轉換,無法自動更新。

TIMESTAMP:將您的時間戳轉換爲格林威治標準時區,以便在內部進行存儲,選擇時將轉換爲當前php時區。

DATETIME:您需要處理時區轉換,無法自動更新(您可以在5.6.5之後)。

+0

謝謝newboyhun。是的,我正在閱讀有關TIMESTAMP的內容,但是我認爲在創建XML文件時可能會出現亂七八糟的現象,並且格式中有一個空格(根據我目前閱讀的內容)。使用time()使用int值;似乎更友好......不知道這是否合理。 – 2014-09-05 16:29:00

+0

由於MySQL 5.6.5對於DATETIME也有[自動初始化和/或更新](https://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html) - 並且它不限於一個列了。 – VMai 2014-09-05 16:37:08

+0

@VMai啊是的完全忘了那個,編輯,謝謝。 user3417476:格式中的空格?你總是可以編輯你自己的字符串。 INT不友好,因爲你需要做所有事情,但是如果你不必處理時區就沒問題。 – 2014-09-05 16:44:53