1

PHP:

$current = time();
$time_ago = $current - 45*60; // get the time 45 mts ago.

MySQL:

我有一个表状态,其中有一个日期时间列“已修改”;

我正在尝试查询表以获取修改时间低于$time_ago;

我的 PHP 代码:

$this->db->select("(SELECT UNIX_TIMESTAMP(status.modified) FROM status WHERE status_id = 0) AS modified_timestamp" , FALSE);
        $this->db->from('status');
        $this->db->where('status_id', 0);
        $this->db->where('modified_timestamp <', $time_ago);
        $this->db->limit(25);
        $q = $this->db->get();

得到一个数据库错误:

“where 子句”中的未知列“modified_timestamp”

SELECT 
    (SELECT UNIX_TIMESTAMP(status.modified) FROM status WHERE status_id = 0) AS modified_timestamp 
    FROM (status) WHERE `status_id` = 0 AND `modified_timestamp` < 1343542758 LIMIT 25
4

2 回答 2

0
$this->db->from('status');
$this->db->where('status_id', 0);
$this->db->where('UNIX_TIMESTAMP(modified) <', $time_ago);
$this->db->limit(25);
于 2012-07-29T07:15:01.860 回答
0

您意识到您可以在 where 子句中使用 UNIX_TIMESTAMP(),对吧?

$this->db->select("UNIX_TIMESTAMP(modified)" , FALSE);
$this->db->from('status');
$this->db->where('status_id', 0);
$this->db->where('UNIX_TIMESTAMP(modified) <', $time_ago);
$this->db->limit(25);
$q = $this->db->get();

注意:可能无法按原样工作,我没有使用过这个特定的 DB API,但你明白了。

于 2012-07-29T07:22:27.937 回答