我想在MySQL中存儲一個日期()字段連續日期到年。正確的方式來存儲MySQL日期後2037年
例如:2065-12-01
問題是,該字段返回:1969-12-31
什麼是記錄在數據庫這些值的正確方法是什麼?我應該使用VARCHAR?
我計算date
字段的值是這樣的:
$future_date = date('Y-m-d', strtotime("+$number_years_to_add years"));
我想在MySQL中存儲一個日期()字段連續日期到年。正確的方式來存儲MySQL日期後2037年
例如:2065-12-01
問題是,該字段返回:1969-12-31
什麼是記錄在數據庫這些值的正確方法是什麼?我應該使用VARCHAR?
我計算date
字段的值是這樣的:
$future_date = date('Y-m-d', strtotime("+$number_years_to_add years"));
你可能使用時間戳字段來存儲的日期,而不是時間字段。
參見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。
它在我看來像你在32位平臺上使用php date
和strtotime
的東西。這些功能變成南瓜,像灰姑娘的馬車,在03:14:07 UTC on 19 January 2038。
您可能希望查看新的php DateTime類,或升級到64位PHP實現。
另外,請閱讀本文。 Accessing dates in PHP beyond 2038
(感謝趕上這個問題擁有22年提前通知的,另一些則沒有。)
一個'DATE'型正常工作在這裏,你運行一些古董MySQL版本還是什麼?另外,你究竟如何設置它? – Vatev
你打算如何存儲它?我們看不到任何示例代碼... –
我使用5.5.16版本 –