@ n00b comment avez-vous des utilisateurs qui seront créés dans le futur ..? intéressant =) J'utilisais ceci pour voir si un message était encore expiré.
Garet Claborn
75
SELECT*FROM myTable WHERE DATE(myDate)= DATE(NOW())
Il me manque peut-être quelque chose, mais avec les types DATETIME, la solution CURDATE () ne fonctionne pas. Cela fait.
Jahmic
De plus, cela prend beaucoup de temps car il y a une surcharge de conversion de DATETIME en date via la fonction DATE (), puis de comparaison avec la condition where.
roopunk
N'utilisez pas de fonctions sur les colonnes, cela oblige la requête à ignorer l'index, ce qui entraîne des requêtes lentes. Vérifiez ma réponse pour une approche alternative stackoverflow.com/a/42365426/4311336
je veux dire aujourd'hui pas maintenant: ai-je besoin aujourd'hui comme 03/03/2011 pas 03/03/2011 14:02:02
n00b
@ n00b: il retournera des lignes plus grandes qu'aujourd'hui, ne vous inquiétez pas si l'heure est incluse
Shakti Singh
3
disons que c'est le 02/02/2011 14:02:02 - les utilisateurs qui ont été créés à 10:02:02 ne seront pas renvoyés dans votre version même s'ils ont été créés "aujourd'hui" :)
n00b
@ n00b: Lol ya, aucun utilisateur ne serait jamais renvoyé, si seulement nous pouvions arrêter le temps.
Mike Purcell
15
Si 'created' est de type datetime
SELECT*FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
CURDATE () signifie également '2013-05-09 00:00:00'
Si la colonne a un index et qu'une fonction est appliquée sur la colonne, l'index ne fonctionne pas et une analyse complète de la table se produit, entraînant une requête très lente.
Pour utiliser l'index et comparer la date / heure avec la date actuelle / actuelle, les éléments suivants peuvent être utilisés.
Solution pour OP:
select*from userswhere created > CONCAT(CURDATE(),' 23:59:59')
Exemple pour obtenir des données pour aujourd'hui:
select*from userswhere
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')
CURDATE()
retour seulement date pas heureEn savoir plus: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html
la source
si la colonne est de type datetime.
la source
Si 'created' est de type datetime
CURDATE () signifie également '2013-05-09 00:00:00'
la source
La réponse marquée est trompeuse. La question posée est
DateTime
, mais a déclaré que ce qui était nécessaire était justeCURDATE()
.La réponse la plus courte et la plus correcte à cette question est:
la source
Si la colonne a un index et qu'une fonction est appliquée sur la colonne, l'index ne fonctionne pas et une analyse complète de la table se produit, entraînant une requête très lente.
Pour utiliser l'index et comparer la date / heure avec la date actuelle / actuelle, les éléments suivants peuvent être utilisés.
Solution pour OP:
Exemple pour obtenir des données pour aujourd'hui:
Ou utilisez BETWEEN pour faire court
la source
la source
Le code ci-dessous a fonctionné pour moi.
la source
json_date ["05/11/2011"]
la source
vous pouvez renvoyer toutes les lignes et utiliser la fonction php dateiff dans une instruction if, bien que cela alourdit le serveur.
la source