MySQL timestamp 时间戳字段,据说只能到 2037年过,为什么 Laravel 还要默认使用这种字段作为新建时间,更新时间呢?
如题
本帖已被设为精华帖!
本帖由系统于 2年前 自动加精
高认可度评论:
@程事不足
我比较了一下:
datetime 和 timestamp
timestamp 和 UNIX timestamps
个人总结(仅供参考):
是因为在 Mysql 中 timestamp 类型通常作为记录数据创建时间,数据更新时间的,所以 laravel 用这个类型非常正确。如果你某些字段确实需要一些特殊的时间值,那么就用 datetime 毫无疑问无疑。
@zhuzhichao 问题是过了2037年怎么办?
Year 2038 problem
scream::scream:
问的是 2038年问题 吧。
Laravel 这样做估计是为了利用 MySQL 的
CURRENT_TIMESTAMP
方法,从数据库层面去维护created_at
和updated_at
,参考 Illuminate/Database 源码中 MYSQL 创建 Timestamp 类型字段代码。到时候 2038 的时候,估计那个时候 Laravel 13 LTE (按大概每 2~3 年一个 LTE 版本发布)已经有很简单的方法来解决这个问题。
如果你现在实在想改掉:
1). 使用 dateTime 类型
2). Model 中设置手动更新
3). 在数据创建或者修改时候手动维护
2038之后办法很简单的 $table->datetime('update_at')->change(); Done!
@zhuzhichao 哈哈 :+1:
@zhuzhichao 为啥不现在就用datetime呢?而且国人喜欢用整型来存放时间,就是距离1970年1月1日的秒数,到底哪种好呢?
@Summer 其实还是可以自动维护的吧,据说是修改model中的代码
@程事不足
我比较了一下:
datetime 和 timestamp
timestamp 和 UNIX timestamps
个人总结(仅供参考):
到时候MySQL就会去解决这个问题了.放心的用吧.
2038年的时候,我会回来看这个帖子的,留名先
@zhuzhichao 谢谢,你说得很详细
@杨进春 到时候我们都老了 @Summer 都变成老司机了
@overlords
@杨进春 愿春哥永生,愿大家看到这个话题的朋友都能永生 :innocent:
timestamp 带国际化时区自动转化的啊
2038年的时候,我会回来看这个帖子的,留名先 +1
2038年的时候,我会回来看这个帖子的,留名先 +2
2038年的时候,我会回来看这个帖子的,留名先 +3
希望那个时候我还写得动代码...
2038年的时候,我会回来看这个帖子的,留名先 +4
2038 年的时候,我会回来看这个帖子的,留名先 +5
2038 年的时候,我会回来看这个帖子的,留名先 +6
2038 年的时候,我会回来看这个帖子的,留名先 +7
2038 年的时候,我会回来看这个帖子的,留名先 +8
2038 年的时候,我会回来看这个帖子的,留名先 +9
2038年的时候,我会回来看这个帖子的,留名先 +10
2038 年的时候,我会回来看这个帖子的,留名先 +11
2038 年的时候,我不会回来看这个帖子的,留名先 +12
2038 年的时候,我不会回来看这个帖子的,留名先 +13
2038 年的时候,我不会回来看这个帖子的,留名先 +14
2038 年的时候,我不会回来看这个帖子的,留名先 +15
2038 年的时候,我会回来看这个帖子的,留名先 +16
2038 年的时候,我会回来看这个帖子的,留名先 +17
2038 年的时候,我会回来看这个帖子的,留名先 +18
解决办法只有一个:2038年直接退休
2038 年的时候,我会回来看这个帖子的,留名 lizesheng :joy:
2038 年的时候,我会回来看这个帖子的,留名先 +19
2038 年的时候,我会回来看这个帖子的,留名先 +20
2038 年的时候,我会回来看这个帖子的,留名先 +21
考古