【发布时间】:2016-06-02 08:08:42
【问题描述】:
$date = date("Y-m-d");
$prev_date = date('m-d-Y', strtotime($date .' -1 day'));
$q = "SELECT `id`, `external_id`, `status`, DATE_FORMAT(from_unixtime(`created`),'%m-%d-%Y') as crt, `extras`
FROM `gshuplogs` WHERE DATE_FORMAT(from_unixtime(`created`),'%m-%d-%Y') = '$prev_date' and
(BINARY `status` in ('success','DEFERRED') or `status` IS NULL)";
$conn = \Cake\Datasource\ConnectionManager::get('default');
$res = $conn->execute($q)->fetchAll('assoc');
debug($res);exit;
上面的查询我已经用mysql写了,现在只想写在cakephp 3中。
我试过了
$res = $this->Gshuplogs->find()->select([
'id', 'external_id', 'status', 'created'
])->where([
"DATE_FORMAT(from_unixtime(`created`),'%m-%d-%Y')" => $prev_date,
'OR' => [
['LOWER status' => 'success'],
['status' => 'DEFERRED'],
['status IS NULL']
]
]);
与
$res = $this->Gshuplogs->find()->select([
'id', 'external_id', 'status', 'created'
])->where([
"DATE_FORMAT(from_unixtime(`created`),'%m-%d-%Y')" => $prev_date,
'OR' => [
['BINARY status' => 'success'],
['status' => 'DEFERRED'],
['status IS NULL']
]
]);
但它正在抛出错误。
错误:SQLSTATE[42000]:语法错误或访问冲突:1064 你 您的 SQL 语法有错误;检查对应的手册 您的 MySQL 服务器版本,以便在附近使用正确的语法 '`),'%m-%d-%Y') = '06-01-2016' AND (`LOWER` status 'success' OR `status` = 第 1 行的“DEFE”
【问题讨论】:
-
它抛出了什么错误?
-
嗨@Alex这里是错误..!错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '
),'%m-%d-%Y') = '06-01-2016' AND (LOWERstatus 'success' ORstatus= 'DEFE' 附近使用正确的语法 -
可能只是缺少括号:
['LOWER (status)' => 'success'],cf。你的错误信息。 -
谢谢@code-kobold
标签: mysql date cakephp cakephp-3.0 case-sensitive