2016-12-17 2 views
0

Ich versuche, die Datensätze abzufragen, deren Fälligkeitsdatum (DateTime-Datentyp) 3 Tage mehr als der aktuelle Tag ist. Ich möchte die restlichen Mails vor Ablauf von 3 Tagen an die Leute schicken. Dafür schreibe ich diese Abfrage.Wie werden die Datensätze abgerufen, deren Fälligkeitsdatum noch 3 Tage vom aktuellen Datum in Rails entfernt liegt?

remind_invoices = Invoice.where("status = ? AND (due_date - 3) == ?", "unpaid", Date.today) 

ähnlich möchte ich die restlichen Mails versenden Ihre Fälligkeit zu sagen ist vorbei, (in diesem Fall Fälligkeit vergangenes Datum ist.) I die Datensätze für diejenigen holen wollen, wenn wir 3 Tage hinzufügen shoud es gleich sein bis zum heutigen Tag. In einfachen Worten möchte ich E-Mails senden, nachdem die 3 Tage ihres Fälligkeitstermins vorbei sind. Dafür ist meine aktuelle Abfrage das.

unpaid_invoices = Invoice.where("status = ? AND (due_date + 3) == ?", "unpaid", Date.today) 

aber diese Abfragen geben Fehler wie

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== '2016-12-17')' at line 1: SELECT `invoises`.* FROM `invoises` WHERE (status = 'unpaid' AND (due_date - 3) == '2016-12-17') 
ActiveRecord::StatementInvalid: Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== '2016-12-17')' at line 1: SELECT `invoises`.* FROM `invoises` WHERE (status = 'unpaid' AND (due_date - 3) == '2016-12-17') 

Antwort

0

Ich glaube nicht, Sie können tun ‚-‘ auf Datum in der mysql, ich könnte allerdings auf, dass man sich irren. Aber es ist am einfachsten zu lassen Rails selbst damit umgehen mit einer Abfrage wie folgt ...

remind_invoices = Invoice.where(status: 'unpaid').where('due_date <= ?', 3.days.from_now)

0

Lassen Sie uns Ihre Anfrage gleiche unten Zeilen schreiben:
1, Rechnungen = Invoice.where ("status = AND DUE_DATE ? =“, "unbezahlt", Date.today + 3.days)

2, unpaid_invoices = Invoice.where ("status = AND DUE_DATE =", "unbezahlt", Date.today -? 3.days)

Verwandte Themen