it-swarm.com.de

In MySQL ist die Datetime gleich oder größer als heute

Was ist der beste Weg, um Folgendes zu tun:

SELECT * FROM users WHERE created >= today;

Hinweis: created ist ein Datum/Uhrzeit-Feld.

152
n00b
SELECT * FROM users WHERE created >= CURDATE();

Aber ich denke du meinst created < today

291
Clodoaldo Neto
SELECT * FROM myTable WHERE  DATE(myDate) = DATE(NOW())

Lesen Sie mehr: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html

71
Edmhs
SELECT * FROM users WHERE created >= NOW();

wenn die Spalte vom Datetime-Typ ist.

30
Shakti Singh

Wenn 'created' der Datetime-Typ ist

SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);

CURDATE () bedeutet auch "2013-05-09 00:00:00".

14
bart
SELECT * FROM users WHERE created >= now()
3
Silx

Wenn die Spalte über einen Index verfügt und eine Funktion auf die Spalte angewendet wird, funktioniert der Index nicht und ein vollständiger Tabellenscan wird durchgeführt, was zu einer sehr langsamen Abfrage führt.

Um index und compare datetime mit today/current date zu verwenden, kann Folgendes verwendet werden.

Lösung für OP:

select * from users
where created > CONCAT(CURDATE(), ' 23:59:59')

Beispiel, um Daten für heute zu erhalten:

select * from users
where 
    created >= CONCAT(CURDATE(), ' 00:00:00') AND
    created <= CONCAT(CURDATE(), ' 23:59:59')

Oder verwenden Sie kurz BETWEEN

select * from users 
where created BETWEEN 
      CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59')
3
Bsienn

Die markierte Antwort ist irreführend. Die Frage lautet DateTime, aber es wurde nur CURDATE() benötigt.

Die kürzeste und richtige Antwort dazu ist:

SELECT * FROM users WHERE created >= CURRENT_TIMESTAMP;
2
JeffMan

Der folgende Code hat bei mir funktioniert.

declare @Today date

Set @Today=getdate() --date will equal today    

Select *

FROM table_name
WHERE created <= @Today
0
Rob Fahndrich