我最初的做法是:
$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
作为列CURTIME
或CURDATE
UNIX_TIMESTAMP
mysql函数其中没有一个使用DATETIME
或TIMESTAMP
mysql var类型。
你对这个有更好的方法吗?
答案 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()
然后你只需要创建一个正确将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对象功能强大且内置,没有范围问题并支持时区。然而,它们有时使用起来不太舒服,因为它们似乎缺乏一些重要的方法。
您可以使用自定义日期对象(第三方或您自己的基于日期时间)。