这可能很简单,但是当我想将时间戳值(例如,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
列。
答案 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