php - 如何使用 MySQL 存储 UNIX 时间戳

标签 php mysql date datetime unix

一些背景:

我的网站在很大程度上依赖于协调各种不同时区的用户。

我在服务器端使用 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/

相关文章:

php - 基础菜单在 CodeIgniter 中不起作用

java - Apache ANT Exec - 处理 exec/CakePHP 控制台提示

python - 如何将 pandas 日期列与今天的日期进行比较?

PHP DateTime::modify 加减月份

php - mysqli 查询返回 false 但没有错误信息

javascript - 如何更改日期格式并在前面添加0

php - 将 MySQL .sql 文件转换为 MS Access 数据库

php - 通过 id 删除/更新 laravel 数据透视表条目

php - 将 'id' 从一个 php 页面传递到另一个 php 页面

mysql - 为什么我的 MySQL 命令行无法在单个表上转储? (但我可以转储完整的数据库)