select * from user where HOUR(NOW()) BETWEEN earliest_login AND latest_login
earliest_login
,latest_login
是两列。
请告诉我如何在cakephp3
中写这个 我试过的代码是:$query->where(
[
function($exp) {
return $exp->between('HOUR(NOW())', 'earliest_login', 'latest_login');
}
它不起作用。
如果有人有解决方案,请告诉我。
答案 0 :(得分:2)
字段名称用于表达式,SQL片段不应包含不受信任的内容。
您可以使用:
$query = $users->find()
->where(function ($exp, $q) {
return $exp->between('Users.created', date1, date2);
})
这将创建类似于类似的SQL:
select * from users WHERE created BETWEEN '$date1' AND '$date2'
您还可以在查询中使用gt()和lt()
$query = $articles->find()
->where(function ($exp) {
return $exp
->gt('created', '2016-07-05 12:02:15')
->lt('created', '2016-07-10 12:02:15');
});
如果想要两个日期之间存在差异
$query = $this->Users->find();
$diff= $query->func()->dateDiff(['2016-07-04 12:02:15', '2016-07-07 18:29:57']);
$query->select(['difference' => $diff,]);
如需更多信息,请阅读此链接 http://book.cakephp.org/3.0/en/orm/query-builder.html