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

时间:2010-02-24 05:44:09

标签: php mysql gmt

我最初的做法是:

$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);

我遇到过以下方法:

  1. 使用gmstrftime来处理gmt
  2. 使用INT代替VARCHAR作为列
  3. 使用mysql函数CURTIMECURDATE
  4. 使用UNIX_TIMESTAMP mysql函数
  5. 其中没有一个使用DATETIMETIMESTAMP mysql var类型。

    你对这个有更好的方法吗?

5 个答案:

答案 0 :(得分:19)

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

$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 functions来比较日期,计算时间差等,直接在您的mysql查询中。

此外,您始终可以使用strtotime()函数检索时间戳。

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

好吧,您可以使用strtotime()

将MySQL TIMESTAMP字段转换为PHP Time()值

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

答案 3 :(得分:0)

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

编辑:对于(Uni-TimeZone)应用程序int是最快的方式,PHP有很好的时间转换工具。

答案 4 :(得分:0)

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对象功能强大且内置,没有范围问题并支持时区。然而,它们有时使用起来不太舒服,因为它们似乎缺乏一些重要的方法。

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