使用 PHP 和 MySQL 存储当前时间的推荐方法是啥?

Posted

技术标签:

【中文标题】使用 PHP 和 MySQL 存储当前时间的推荐方法是啥?【英文标题】:What's the recommended way to store current time using PHP and MySQL?使用 PHP 和 MySQL 存储当前时间的推荐方法是什么? 【发布时间】:2011-01-20 09:42:07 【问题描述】:

我最初的做法是:

$current = time(); // save this to column CURRENT_TIME with column type VARCHAR

//retrieve it like this
$retrieved = mysql_query(....) //assume query for getting the stored time value
$time = strtotime($retrieved);

我遇到过以下几种方法:

    使用gmstrftime 处理gmt 使用INT 代替VARCHAR 列 使用mysql函数CURTIMECURDATE 使用UNIX_TIMESTAMPmysql函数

其中没有一个使用DATETIMETIMESTAMP mysql var 类型。

你有更好的方法吗?

【问题讨论】:

Grrr... 投了反对票,没有发表评论。 【参考方案1】:

mysql中建议使用mysqltimestamp(YYYY-MM-DD HH:MM:SS)字段类型来存储时间和日期变量。

$sDate = date("Y-m-d H:i:s"); // 2015-04-07 07:12:51
mysql_query("insert into `table_name` set `created_on` = '$sDate'");

它使您能够直接在 mysql 查询中使用mysql functions 来比较日期、计算时差等。

您还可以随时使用strtotime() 函数检索时间戳

$result = mysql_query("select `created_on` from `table_name`");
$row = mysql_fetch_row($result);
$iTimestamp = strtotime($row[0]); // 1428390771

【讨论】:

所以要将它存储在数据库中我需要使用 date('YYYY-MM-DD HH:ii:ss) 以便它可以与mysql时间戳兼容? (因为我尝试过其他格式,列还是0000-00-00 00:00:00) 我编辑了答案。看一看。也可以在dev.mysql.com/doc/refman/5.0/en/datetime.html查看手册【参考方案2】:

我只是在MySQL中使用TIMESTAMP值类型,让MySQL使用自己的CURRENT_TIMESTAMP

【讨论】:

【参考方案3】:

嗯,您可以使用strtotime() 将 MySQL TIMESTAMP 字段转换为 php Time() 值

然后你只需要创建一个函数来正确地将 PHP Time() 值转换为 MySQL TIMESTAMP 值。

【讨论】:

和将 PHP time() 值转换为 mysql TIMESTAMP 的函数是? @Ygam:您可以使用 MySQL 的 FROM_UNIXTIME() 函数将存储转换为数据库。如果您想在 DB 端进行操作,您也可以实际使用 UNIXTIMESTAMP() 转换出来。 @Ygam 你可以用谷歌搜索这个......:$mysqldate = date( 'Y-m-d H:i:s', $phpdate ); 我已经这样做了,但是我正在寻找的解决方案是在 mysql 中将时间戳作为数据类型,然后能够使用 date() 函数对其进行格式化:(【参考方案4】:

MySQL 使用的格式不需要与 PHP 使用的格式相匹配。选择两边最好的。数据库有日期数据类型是有原因的;在 MySQL 中,您可以从以下选项中进行选择:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html

在 PHP 中,你基本上有三种选择:

良好的旧时间戳很容易处理,您可以在 MySQL 查询中使用它们 — 请参阅 FROM_UNIXTIME() 和 UNIX_TIMESTAMP() — 但它们存在严重的范围问题(您不能在 1970 年之前依赖它们日期,所以它们不适合生日)。

DateTime 对象功能强大且内置,没有范围问题并支持时区。但是,它们有时使用起来不太舒服,因为它们似乎缺少一些重要的方法。

您可以使用自定义日期对象(基于第三方或您自己的 DateTime)。

【讨论】:

【参考方案5】:

将其存储为 int 更符合逻辑。 您保存日期的行格式,以后可以使用它提取其他格式和更多数据.. 我也将它保存为 int。

编辑:For(Uni-TimeZone) application int 是最快的方法,PHP 有很好的时间转换工具。

【讨论】:

那么您永远不会为多个时区构建网站 时间戳和日期数据类型的发明有几个原因。此外,它还让其他人了解数据的含义。

以上是关于使用 PHP 和 MySQL 存储当前时间的推荐方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 将推荐数量和推荐 ID 添加到 MySQL 数据库中

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

mysql 存储过程中使用游标中使用临时表可以替代数组效果

Mysql/Php - 当前日期和时间

08 MySQL存储引擎

使用 php、pdo 和 mysql 显示当前登录用户的简单计数器