2016-04-26 5 views
0

Ich muss nur Daten auswählen, wo das Datum Feld gestern ist. Das einzige Problem, das ich habe, ist, dass die Daten im Datumsfeld wie folgt aussieht. 20160412 062815.000Nur gestern Datum mit seltsamen Datumsformat SELECT

Ich interessiere mich nicht wirklich für die Zeit, ich möchte nur dynamisch nach etwas mit dem gestrigen Datum suchen. Ich habe eine Vielzahl von CURDATE() -1 versucht, aber ich bin mir nicht sicher, wie man nur die ersten 8 Ziffern des Feldes sucht.

+0

Der Dataipe ist Varchar? – trincot

Antwort

0

Unter der Annahme, den Datumswert verwenden können, wird als String gespeichert sind, und die ersten 8 Zeichen sind immer das Datum in YYYYMMDD Format, dann können Sie eine Abfrage wie folgt verwendet werden:

select * 
from your_table 
where your_column like concat(date_format(current_date() - interval 1 day,'%Y%m%d'),'%') 

Ein Vorteil dieser Abfrage besteht darin, dass sie im Gegensatz zu den anderen Antworten einen Index für Ihr Datumsfeld nutzen kann.

0

Formatieren Sie das Datum von gestern auf eine Zahl und konvertieren Sie die Datumszeichenfolge auch in eine Zahl.

select * from your_table 
where date_format(curdate() - interval 1 day, '%Y%m%d') * 1 = date_col * 1 

SQLFiddle demo

*1 ist eine mathematische Operation, die MySQL zwingt Strings in eine Zahl zu konvertieren.

+0

Vielen Dank, funktioniert wie ein Traum. Danke @scaisEdge und Ike Walker für deine Vorschläge auch. –

0

Sie subdate(currentDate, 1)

select * from your_table 
where subdate(currentDate, 1) = DATE(your_date) 
Verwandte Themen