我试图在MySQL中存储 date()字段,该字段是 2037 年的连续日期。
例如:2065-12-01
问题是该字段正在返回:1969-12-31
在DB上记录这些值的正确方法是什么?我应该使用 VARCHAR 吗?
我像这样计算date
字段的值:
$future_date = date('Y-m-d', strtotime("+$number_years_to_add years"));
答案 0 :(得分:2)
您可能使用时间戳字段来存储日期而不是日期时间字段。
请参阅datetime data types上的mysql文档,特别是:
DATE类型用于具有日期部分但没有时间部分的值。 MySQL在' YYYY-MM-DD'中检索并显示DATE值。格式。的的 支持的范围是' 1000-01-01'到' 9999-12-31' 。
DATETIME类型用于包含日期和时间的值 部分。 MySQL在' YYYY-MM-DD中检索并显示DATETIME值 HH:MM:SS'格式。 支持的范围为' 1000-01-01 00:00:00'至 ' 9999-12-31 23:59:59' 。
TIMESTAMP数据类型用于包含date和的值 时间部分。 TIMESTAMP的范围' 1970-01-01 00:00:01' UTC到 ' 2038-01-19 03:14:07' UTC 强>
答案 1 :(得分:2)
在我看来,就像你在32位平台上使用php date
和strtotime
一样。这些功能变成了南瓜,就像灰姑娘的马车一样,在03:14:07 UTC on 19 January 2038。
您可能希望查看新的php DateTime类,或升级到64位php实现。
另外,请阅读此内容。 Accessing dates in PHP beyond 2038
(感谢您提前22年通知此问题。其他人不会。)