使用PHP存储时间戳:date()或MySQL:FROM_UNIXTIME()?

时间:2013-02-12 22:17:39

标签: php mysql unix-timestamp

这可能很简单,但是当我想将时间戳值(例如,time()返回)存储到MySQL表的TIMESTAMP列中时,这两个中的哪一个更可取:< / p>

function storeTime($timestamp) {
   // Option one:
   $query = "INSERT INTO faketable (datecol) VALUES (FROM_UNIXTIME(".$timestamp."))";
   // Option two:
   $query = "INSERT INTO faketable (datecol) VALUES (".date("YY-MM-DD HH:MM:II", $timestamp).")";
}

是否有差异?

编辑:抱歉,这意味着date(),而不是strtotime() ......

编辑2: NOW()没有切断芥末,实际时间戳是发送到我方法的参数。我事先不知道它是什么。

编辑3:我真的不应该在这个时候提问。事实上,相关列是TIMESTAMP列,而不是DATETIME列。

3 个答案:

答案 0 :(得分:1)

回答你的问题;没有逻辑上的区别。它们都返回日期https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime的字符串表示形式,MySQL将很乐意转换为DATETIME或TIMESTAMP类型。至于哪个更快的证据会暗示MySQL; http://www.onextrapixel.com/2010/06/23/mysql-has-functions-part-5-php-vs-mysql-performance/Faster to use MySQL's CURDATE() or PHP's date()?

答案 1 :(得分:0)

最简单的是mysql中的FROM_UNIXTIME()。这将是一个整数 - >日期转换。在PHP中执行它意味着integerr-&gt; string-&gt; datetime,效率低得多。

同样,你的strtotime()完全无效。这不是现在的功能。你最终会进入数据库。

至于存储“now”时间戳,为什么不只使用时间戳字段类型?当您插入/更新记录时,它会自动将其自身设置为当前时间。

答案 2 :(得分:0)

如何回合

INSERT INTO faketable (datecol) VALUES (UNIX_TIMESTAMP())

我认为这就是你在寻找OP