@ n00b Wie haben Sie Benutzer, die in der Zukunft erstellt werden ..? interessant =) Ich habe dies verwendet, um zu sehen, ob ein Beitrag noch abgelaufen ist.
Garet Claborn
75
SELECT*FROM myTable WHERE DATE(myDate)= DATE(NOW())
Vielleicht fehlt mir etwas, aber bei DATETIME-Typen funktioniert die CURDATE () -Lösung nicht. Das macht.
Jahmic
Außerdem nimmt dies viel Zeit in Anspruch, da die Konvertierung von DATETIME in das Datum über die Funktion DATE () und der anschließende Vergleich mit der where-Bedingung viel Aufwand bedeutet.
Roopunk
Verwenden Sie keine Funktionen für Spalten, da die Abfrage den Index ignoriert und langsame Abfragen verursacht. Überprüfen Sie meine Antwort für alternativen Ansatz stackoverflow.com/a/42365426/4311336
Ich meine heute nicht jetzt: D Ich brauche heute wie 2011-03-03 nicht 2011-03-03 14:02:02
n00b
@ n00b: Es werden Zeilen zurückgegeben, die größer als heute sind.
Shakti Singh
3
Nehmen wir an, es ist 2011-02-02 14:02:02 - Benutzer, die um 10:02:02 erstellt wurden, würden in Ihrer Version nicht zurückgegeben, obwohl sie "heute" erstellt wurden :)
n00b
@ n00b: Lol ya, es würden niemals Benutzer zurückgegeben, wenn wir nur die Zeit anhalten könnten.
Mike Purcell
15
Wenn 'Erstellt' Datums- / Uhrzeittyp ist
SELECT*FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
Wenn die Spalte einen Index hat und eine Funktion auf die Spalte angewendet wird, funktioniert der Index nicht und es erfolgt ein vollständiger Tabellenscan, was zu einer sehr langsamen Abfrage führt.
Um den Index zu verwenden und Datum und Uhrzeit mit dem heutigen / aktuellen Datum zu vergleichen, kann Folgendes verwendet werden.
Lösung für OP:
select*from userswhere created > CONCAT(CURDATE(),' 23:59:59')
Beispiel, um Daten für heute zu erhalten:
select*from userswhere
created >= CONCAT(CURDATE(),' 00:00:00')AND
created <= CONCAT(CURDATE(),' 23:59:59')
Oder verwenden Sie ZWISCHEN kurz
select*from users where created BETWEEN
CONCAT(CURDATE(),' 00:00:00')AND CONCAT(CURDATE(),' 23:59:59')
CURDATE()
Rückkehr nur Datum nicht ZeitLesen Sie mehr: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html
quelle
Wenn die Spalte vom Typ datetime ist.
quelle
Wenn 'Erstellt' Datums- / Uhrzeittyp ist
CURDATE () bedeutet auch '2013-05-09 00:00:00'
quelle
Die markierte Antwort ist irreführend. Die gestellte Frage ist
DateTime
, aber angegeben, was gebraucht wurde, war gerechtCURDATE()
.Die kürzeste und richtige Antwort darauf lautet:
quelle
Wenn die Spalte einen Index hat und eine Funktion auf die Spalte angewendet wird, funktioniert der Index nicht und es erfolgt ein vollständiger Tabellenscan, was zu einer sehr langsamen Abfrage führt.
Um den Index zu verwenden und Datum und Uhrzeit mit dem heutigen / aktuellen Datum zu vergleichen, kann Folgendes verwendet werden.
Lösung für OP:
Beispiel, um Daten für heute zu erhalten:
Oder verwenden Sie ZWISCHEN kurz
quelle
quelle
Der folgende Code hat bei mir funktioniert.
quelle
json_date ["05/11/2011"]
quelle
Sie können alle Zeilen zurückgeben und dann die PHP-Datediff-Funktion in einer if-Anweisung verwenden, obwohl dies den Server zusätzlich belastet.
quelle