将日期和时间存储在 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 中使用什么数据类型(例如timestamp
、datetime
...)?
我应该使用什么方法来生成日期时间(例如 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 显示的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ajax 将 PHP 嵌入到 javascript 中,以便将 MySQL 数据存储在 javascript 对象中