如何在CakePHP3.x中使用INTERVAL

如何在CakePHP3.x中使用INTERVAL,cakephp,intervals,cakephp-3.x,Cakephp,Intervals,Cakephp 3.x,我使用的是CakePHP3.x。我已经使用strotime(date('Y/m/dh:I',time())将我的所有日期转换并存储为字符串。在DB中,它将像这样存储1479466560,但现在我需要选择14天前的行。我试着在下面的条件下 $this->loadModel('Users'); $userList = $this->Users->find('all') ->select(['created']) ->where(['status' =&g

我使用的是CakePHP3.x。我已经使用
strotime(date('Y/m/dh:I',time())将我的所有日期转换并存储为字符串。在DB中,它将像这样存储1479466560,但现在我需要选择14天前的行。我试着在下面的条件下

$this->loadModel('Users');
$userList = $this->Users->find('all')
    ->select(['created'])
    ->where(['status' => 1,'created' => 'created + INTERVAL 14 DAY > NOW()']);

它只返回空行。怎么做?。谁能帮帮我

我知道这并没有告诉您如何使用
interval
,但它确实解决了问题

我过去所做的是将php变量与一个简单的
=
modify(“-12小时”); $this->Model->find() ->其中(['created>='=>$date]) ->andWhere(['created<'=>$cur_date]);
这有效地使用了一个间隔。它还可以很好地动态编辑。

您的查询与从
用户
表中创建的任何
日期都不匹配

您的CakePHP3查询在SQL下生成:

SELECT created FROM users WHERE (status = 1 AND created = created + INTERVAL 14 DAY > NOW())
注意:首先尝试从您的
phpmyadmin
中调整上述查询

您可以在下面的SQL中尝试
INTERVAL
test

SELECT '2016-01-17 10:57:21' + INTERVAL 14 DAY > NOW();

SELECT '2016-01-17 10:57:21' + INTERVAL 14 DAY;
注意:根据需要调整日期字符串。现在,您可以看到您所做的
错误之处

SELECT '2016-01-17 10:57:21' + INTERVAL 14 DAY;