我正在使用CakePHP 3.x.我已使用$this->loadModel('Users');
$userList = $this->Users->find('all')
->select(['created'])
->where(['status' => 1,'created' => 'created + INTERVAL 14 DAY > NOW()']);
将所有日期转换并存储到字符串。在数据库中,它将存储如下 1479466560 但是现在我需要从14天前选择行。我试过以下条件,
{{1}}
它只返回空行。这该怎么做 ?。任何人都可以帮助我!
答案 0 :(得分:1)
我知道这并没有告诉你如何使用interval
,但确实解决了这个问题。
我过去所做的是一个简单的>=
<
组合以及php变量:
$cur_date = date_create();
$date = clone $cur_date;
$date->modify("-12 hours");
$this->Model->find()
->where(['created >= ' => $date])
->andWhere(['created < '=> $cur_date]);
这有效地使用了间隔。它也可以很好地动态编辑。
答案 1 :(得分:0)
您的查询与created
表中的任何users
日期都不匹配。
在SQL下面生成的CakePHP3查询:
SELECT created FROM users WHERE (status = 1 AND created = created + INTERVAL 14 DAY > NOW())
注意:首先尝试从
phpmyadmin
调整以上查询。
您可以尝试使用以下SQL进行INTERVAL
测试
SELECT '2016-01-17 10:57:21' + INTERVAL 14 DAY > NOW();
或强>
SELECT '2016-01-17 10:57:21' + INTERVAL 14 DAY;
注意:根据需要调整日期字符串。现在你可以看到你所做的
wrong
是什么