2012-07-27 63 views
0

在我的許多MySQL數據庫表中,我一直在int UNSIGNED字段中存儲時間戳(來自php time())。但是,如果我記得正確,time()會返回13個數字值,而INT UNSIGNED會存儲長度只有10個數字的2147483647。因此,由time()返回的任何值都將太大而無法存儲在int字段中。與MySQL如何存儲INT不一致?

但是,我的時間戳都沒有被截斷,所以它如何能夠存儲如此大的值?這是數據庫不一致還是我錯過了什麼?

回答

2

1343399732自從epoch(1970)以來已經過去了秒,它可以存儲在一個有符號的int中。

它處理與2038大約有關的秒數,當您將秒存儲在帶符號的32位整數中時,會開始導致麻煩。

+1

不,你的回答是無效的,實際上從現在開始已經過了1343399803秒。 :] – 2012-07-27 14:39:28

+0

啊,我一定是錯誤的數字..所以這是臭名昭着的y2k38問題?當然,快速解決這個問題(雖然不是美豔的)會在到時候將字段類型改爲「BIGINT UNSIGNED」。 – 2012-07-27 14:41:49