将日期和时间存储在 MySQL 数据库中以便以后使用 PHP 显示的最佳方法是啥?

Posted

技术标签:

【中文标题】将日期和时间存储在 MySQL 数据库中以便以后使用 PHP 显示的最佳方法是啥?【英文标题】:What's the best way to store date and time in a MySQL database for later display with PHP?将日期和时间存储在 MySQL 数据库中以便以后使用 PHP 显示的最佳方法是什么? 【发布时间】:2012-07-31 18:58:35 【问题描述】:

我想将用户在我的网站上执行操作的日期和时间存储到 mysql 数据库中。我希望能够轻松地做到以下几点:

将日期和时间作为一个字段存储在数据库中 使用内置的 php 或 MySQL 函数生成操作的日期时间 根据我的服务器时间存储日期时间,不用担心用户时区。 Order By查询MySQL时的日期时间字段 稍后,使用内置 PHP 方法以多种不同格式显示日期时间

这是我的问题:

我应该在 MySQL 中使用什么数据类型(例如timestampdatetime ...)? 我应该使用什么方法来生成日期时间(例如 MySQL 的 now()、PHP 的 date() ...)? 我以后应该使用哪种 PHP 方法以各种漂亮的方式格式化日期时间(例如 2012 年 4 月 23 日,2012 年 7 月星期一下午 5 点...)?

【问题讨论】:

Wasn't this asked before? 【参考方案1】:

我会将其存储为日期时间,而不是时间戳

我通常使用 PHP 日期函数,如果您想存储相对于用户时区的时间,您可以根据用户的设置简单地更改时区。

当你从数据库中取出它时,使用 strtotime() 来转换它,然后你可以使用所有 date() 功能来显示它。示例:

echo date('F j, Y',strtotime($db_datetime)); //Displays as 'March 5, 2012'

【讨论】:

【参考方案2】:

如果您将mysql数据类型设置为不可为空的时间戳,然后为该列保存具有空值的行,mysql会自动为您更新时间戳。

至于再读回来,你可以用php的strtotime和date对象把它变成你需要的格式。

【讨论】:

【参考方案3】:

您应该使用 datetime 数据类型来满足您的要求。 它将根据您的查询存储输入字段中的日期和时间。

要检索日期时间,您可以使用 mysql 的 date_format() 函数或 PHP 的 date() 函数。 日期时间将始终根据服务器时间而不是客户端时间存储。

【讨论】:

【参考方案4】:

多年来,我一直在为这个问题苦苦挣扎,我开始认为最好的方法可能是将时间存储为表示 Unix 时间的整数(从 1970 年 1 月 1 日开始的秒数)。我已经这样做了,效果很好。

就我个人而言,我从未使用过日期时间,而且我想不出我会使用它的情况。它只是带来了太多的问题。

时间戳要好很多,但在 MySQL 中它不能存储迟于 2032 年的日期。

我很想听听一些关于这个话题的严肃讨论,但 Stack Overflow 可能不是最适合这个话题的地方。

【讨论】:

以上是关于将日期和时间存储在 MySQL 数据库中以便以后使用 PHP 显示的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用时区信息在 MySQL 中存储日期时间

[每日更新-MySQL基础知识]6.常用数据类型-日期时间

使用 Ajax 将 PHP 嵌入到 javascript 中,以便将 MySQL 数据存储在 javascript 对象中

Mysql - 如何将字符串中的日期与查询中的unix时间进行比较

在mysql数据库中存储日期

使用存储过程将自动日期字段添加到 MYSQL 数据库