我有一个从 PHP 发送到 MySQL 的 SQL 查询,它看起来像这样:
SELECT (now()-table.created) FROM table
现在我需要用 PHP 中的日期替换 MySQL 函数“now()”(因为它并不总是我想要的“现在”在查询中),但是当我将 PHP 传递给“time()”时它不起作用mysql。
我可以使用什么 PHP 方法?
MySQL 有一个名为UNIX_TIMESTAMP
and的函数FROM_UNIXTIME
,
-- NOW() => time()
SELECT UNIX_TIMESTAMP(NOW())
-- time() => DATETIME()
SELECT FROM_UNIXTIME(1366223878)
嗯,嗯,这取决于table.created
存储的格式。
如果它是一个 UNIXTIME 值(即与 PHP 的时间格式相同),那么您需要做的就是以正确的方式插入它:
<?php
$dbobj->query('SELECT ('.time().'-table.created) FROM table');
?>
...如果相反,table.created
是日期时间或类似值,则需要创建适当的日期格式:
<?php
$dbobj->query("SELECT ('".date('Y-m-d H:i:s', time())."'-table.created) FROM table");
?>
使用较新的 DateTine 对象;
$date = new DateTime('NOW');
$query = "SELECT * FROM table where date > ".$date->format('Y-m-d H:i:s')
DateTime 对象中的NOW
将根据您的喜好准确,因为它存储在您似乎想要它的那一刻,与在 MySQL 中完成时不同,可能是(微/毫秒)秒后。