Ich muss Datumsangaben in MySQL vergleichen und den Zeitanteil in einer DateTime
-Spalte ignorieren. Ich habe folgende SQL ausprobiert.
SELECT * FROM order_table where order_date=date_format('2012-05-03', '%Y-%m-%d');
Es ruft keine Zeile ab, obwohl in der MySQL-Tabelle ein Datum 2012-05-03 10:16:46
vorhanden ist. Wie kann der Zeitanteil im Feld DateTime
beim Vergleich von Datumsangaben in MySQL ignoriert werden?
Sie können die Funktion DATE
verwenden:
SELECT col1, col2, ..., coln
FROM order_table
WHERE date(order_date) = '2012-05-03'
Dies ist jedoch effizienter, wenn Ihre Tabelle groß ist und Sie einen Index für order date
haben:
SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-03'
AND order_date < '2012-05-04'
Wenn Sie ein Datum übergeben möchten, können Sie Folgendes versuchen:
where YEAR(order_date)='2012' AND MONTH(order_date)='05' AND DAY(order_date)='03'
Sie können unter this nach weiteren Funktionen suchen.
@ Mark hat den guten Ansatz, aber seien Sie vorsichtig, dass Sie in diesem Fall immer den nächsten Tag berechnen müssen. Wenn Sie das vermeiden möchten und trotzdem die Zeit ignorieren, können Sie Folgendes tun:
WHERE order_date >= '2012-05-27 00:00:00' AND order_date <= '2012-05-27 23:59:59'
Ich hoffe das macht Sinn.
Vielleicht können Sie eine Funktion wie date()
verwenden. In diesem Fall kann jedoch die Geschwindigkeit verringert werden, da der Index nicht verwendet werden kann. Also empfehle ich zu verwenden
SELECT * FROM order_table
WHERE order_date between('2012-05-03 0:0:0' and '2012-05-03 23:59:59')
SELECT * FROM order_table WHERE date(order_date) = '2012-05-03';
Dies ist ein bisschen alt, aber eine korrekte Antwort verwendet auch das date_format in der Spalte order_date wie folgt:
SELECT * FROM order_table where date_format(order_date, '%Y-%m-%d')='2012-05-03';
beim Vergleichen von Daten in MySQL kann eine der folgenden Methoden verwendet werden:
DATEDIFF() Subtract two dates
TIMEDIFF() Subtract time
TIMESTAMPDIFF() Subtract an interval from a datetime expression
PERIOD_DIFF() Return the number of months between periods
weitere Informationen zu Datumsfunktionen MySQL Dokumentation .
In meinem Fall hatte ich DATE_FORMAT
und CONVERT_TZ
Der einzige, der für mich gearbeitet hat, ist dies
DATE_FORMAT(CONVERT_TZ(`order_item`.created, '+0:00', '+2:00'), '%d/%m/%Y %H:%i')
BETWEEN
('12/02/2018 01:42')
AND
('12/02/2018 10:51')