11

我最初的方法是:

$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_TIMESTAMPmysql函数

其中没有一个使用DATETIMEor TIMESTAMPmysql var 类型。

您对此有更好的方法吗?

4

5 回答 5

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 查询中使用mysql 函数来比较日期、计算时差等。

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

$result = mysql_query("select `created_on` from `table_name`");
$row = mysql_fetch_row($result);
$iTimestamp = strtotime($row[0]); // 1428390771
于 2010-02-24T06:29:36.840 回答
3

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

于 2010-02-24T09:06:44.067 回答
1

好吧,您可以使用以下方法将 MySQL TIMESTAMP 字段转换为 PHP Time() 值strtotime()

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

于 2010-02-24T05:46:33.653 回答
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对象功能强大且内置,没有范围问题并支持时区。但是,它们有时使用起来不太舒服,因为它们似乎缺少一些重要的方法。

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

于 2010-02-24T08:32:00.280 回答
0

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

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

于 2010-02-24T06:24:35.850 回答