Ich habe zwei Tabellen zuerst ist messages
und zweitens ist campaign
. Ich möchte eine Abfrage schreiben, wo ich die Anzahl der Nachricht finden kann, die status
ist 1
und die Kampagne send_date
(hier ist der Spaltentyp Varchar) ist größer als die aktuelle Zeit. Ich habe das müde.cakephp3 übereinstimmende Abfrage mit Datum varchar
$date = date('m/d/Y H:i');
$this->loadModel('Messages');
$messages = $this->Messages
->find()
->where(['status' => 1])
->matching('Campaigns', function ($q) use($date) {
return $q->where([
"Campaigns.date_format(str_to_date(send_date,'%m/%d/%Y H:i'))" => $date
]);
})
->count();
debug($messages);
exit;
aber es zeigte Fehler
SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax für 'send_date' zu verwenden, '% m /% d /% YH: i')) = '05/18/2016 00:00 'UND Campaigns.id = (Messages.`camp‘at line 1
Klicken Sie auf unten angegebenen Link, um die Struktur siehe Tabelle
Bitte nicht Beiträge wie Schemata als (tr uncated) Bilder, stattdessen posten Sie es als Text/SQL (** http: //stackoverflow.com/questions/3090209/phpmyadmin-and-show-create-table**) in einer richtig formatierten Weise, oder zeigen Sie zumindest die ' Registerkarte "Struktur". Gleiches gilt für Werte, poste sie einfach hier in einem lesbaren Format - Danke! Davon abgesehen, warum sollten Sie 'VARCHAR' für zeitbasierte Werte verwenden, das macht nicht viel Sinn? – ndm