2015-11-19 38 views
1

我想在MySQL中存儲一個日期()字段連續日期到年。正確的方式來存儲MySQL日期後2037年

例如:2065-12-01

問題是,該字段返回:1969-12-31

什麼是記錄在數據庫這些值的正確方法是什麼?我應該使用VARCHAR

我計算date字段的值是這樣的:

$future_date = date('Y-m-d', strtotime("+$number_years_to_add years")); 
+1

一個'DATE'型正常工作在這裏,你運行一些古董MySQL版本還是什麼?另外,你究竟如何設置它? – Vatev

+0

你打算如何存儲它?我們看不到任何示例代碼... –

+0

我使用5.5.16版本 –

回答

1

你可能使用時間戳字段來存儲的日期,而不是時間字段。

參見MySQL文檔datetime data types,具體有:

日期類型用於值與日期的一部分,但沒有時間的一部分。 MySQL以'YYYY-MM-DD'格式檢索並顯示DATE值。 支持的範圍是'1000-01-01'到'9999-12-31'

DATETIME類型用於包含日期和時間 零件的值。 MySQL以'YYYY-MM-DD HH:MM:SS'格式檢索並顯示DATETIME值。 支持的範圍是'1000-01-01 00:00:00'至 '9999-12-31 23:59:59'

TIMESTAMP數據類型用於既包含日期又包含 時間部分的值。 TIMESTAMP的範圍爲'1970-01-01 00:00:01'UTC至 '2038-01-19 03:14:07'UTC

+0

閱讀文檔。閱讀你的第一行。我認爲你有錯誤的建議。 –

+0

對不起,我無法關注。 – Shadow

+0

@GordonLinoff:問題是什麼是存儲2037年以後的日期的正確方法,這個建議怎麼是錯的(想知道爲什麼我選擇了相同的建議,所以我可以學習) – PaulF

2

它在我看來像你在32位平臺上使用php datestrtotime的東西。這些功能變成南瓜,像灰姑娘的馬車,在03:14:07 UTC on 19 January 2038

您可能希望查看新的php DateTime類,或升級到64位PHP實現。

另外,請閱讀本文。 Accessing dates in PHP beyond 2038

(感謝趕上這個問題擁有22年提前通知的,另一些則沒有。)