Ich versuche, eine MySQL-Select-Anweisung auszuführen, bei der das heutige Datum angezeigt wird und nur Ergebnisse zurückgegeben werden, die an diesem aktuellen Tag registriert wurden. Ich habe derzeit Folgendes versucht, aber es scheint nicht zu funktionieren.
SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d')
FROM users
WHERE users.signup_date = CURDATE()
Ich habe meine SELECT
Aussage dahingehend geändert , danke Jungs.
SELECT id FROM users WHERE DATE(signup_date) = CURDATE()
signup_date
das Datum / Uhrzeit-Feld istsignup_date
wenn er die Uhrzeit enthält? Dann möchten Sie das Datumsformat in derWHERE
Klausel verwenden, um die Uhrzeit zu entfernen , damit sie mit demCURDATE()
mysql_num_rows
zeigt 0 nicht an. Nur ein Leerzeichen.Antworten:
quelle
DATETIME
.signup_date
, selbst wenn ein solcher Index vorhanden ist). Bevorzugen Sie Serjios Lösung .< '2017-08-31 00:00:00'
wenn Sie eine Version von MySQL mit Millisekunden verwenden.Diese Abfrage verwendet den Index, wenn Sie ihn für das
signup_date
Feld habenquelle
signup_date
Gegensatz zu anderen Ansätzen einen Index nutzen kann.signup_date
zwei Mal zu testen, ist korrekt, die Zeiten jedoch nicht. Es sollte zwischen00:00
und23:59:59
am aktuellen Datum liegen.WHERE DATE(signup_date) = CURDATE()
hat meinen Server ~ 50 ms gekostet, dieser hier 0,8 ms.Klingt so, als müssten Sie die Formatierung hinzufügen zu
WHERE
:Siehe SQL Fiddle mit Demo
quelle
Sie können das
CONCAT
withCURDATE()
für die gesamte Tageszeit verwenden und dann filtern, indem Sie dieBETWEEN
in-WHERE
Bedingung verwenden:quelle