一些背景:
我的网站在很大程度上依赖于协调各种不同时区的用户。
我在服务器端使用 Carbon 处理我的时区转换和计算,在客户端使用 moment.js。
因此,设计选择将所有日期时间(例如事件的开始时间)存储为 unix 时间戳。
问题
我对“时间戳”的定义有点困惑。在 PHPMyAdmin 中,时间戳不是 unix 时间戳而是日期格式:
2016-10-06 20:50:46
因此,如果您希望拥有当前时间戳的默认字段,那么您将获得格林威治标准时间的当前日期。
与 unix 时间戳整数相比,这使得转换回用户时区的事情变得更加复杂......
问题:
我应该将我的 unix 时间戳存储为什么字段类型,目前我使用 int(11)
,默认值为 none
。通过扩展...有没有办法在 MySQL 中默认存储当前的 unix 时间戳(例如 1475971200)?
最佳答案
Unix 时间戳是一个大整数(自 1970-01-01 00:00:00 UTC 以来的秒数),因此 INT(11)
是正确的数据类型。
不幸的是,我认为没有任何方法可以指定将插入当前时间戳的默认值。您需要在插入时显式调用 UNIX_TIMESTAMP()
并使用它。 DEFAULT
规范中不允许函数调用。
关于php - 如何使用 MySQL 存储 UNIX 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39904326/