使用 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函数CURTIME
或CURDATE
使用UNIX_TIMESTAMP
mysql函数
其中没有一个使用DATETIME
或TIMESTAMP
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 数据库中