Quelle est la meilleure façon de faire:
SELECT * FROM users WHERE created >= today;
Remarque: créé est un champ datetime.
SELECT * FROM users WHERE created >= CURDATE();
Mais je pense que vous voulez dire created < today
SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW())
En savoir plus: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html
SELECT * FROM users WHERE created >= NOW();
si la colonne est de type date/heure.
Si 'créé' est un type de date/heure
SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
CURDATE () signifie également '2013-05-09 00:00:00'
SELECT * FROM users WHERE created >= now()
Si la colonne a un index et qu'une fonction est appliquée sur la colonne, alors l'index ne fonctionne pas et une analyse complète de la table est effectuée, ce qui provoque une requête très lente.
Pour utiliser index et comparer date/heure avec la date du jour/actuelle, vous pouvez utiliser les éléments suivants.
Solution pour OP:
select * from users
where created > CONCAT(CURDATE(), ' 23:59:59')
Échantillon pour obtenir des données pour aujourd'hui:
select * from users
where
created >= CONCAT(CURDATE(), ' 00:00:00') AND
created <= CONCAT(CURDATE(), ' 23:59:59')
Ou utilisez BETWEEN pour faire court
select * from users
where created BETWEEN
CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59')
La réponse marquée est trompeuse. La question posée est DateTime
, mais a déclaré que ce qui était nécessaire était simplement CURDATE()
.
Le réponse la plus courte et correcte à ceci est:
SELECT * FROM users WHERE created >= CURRENT_TIMESTAMP;
Le code ci-dessous a fonctionné pour moi.
declare @Today date
Set @Today=getdate() --date will equal today
Select *
FROM table_name
WHERE created <= @Today