J'essaie d'exécuter une instruction mysql select où elle regarde la date du jour et ne renvoie que les résultats qui se sont inscrits ce jour-là. J'ai actuellement essayé ce qui suit, mais cela ne semble pas fonctionner.
SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d')
FROM users
WHERE users.signup_date = CURDATE()
J'ai modifié ma SELECT
déclaration en ce sens, merci les gars.
SELECT id FROM users WHERE DATE(signup_date) = CURDATE()
signup_date
soit le champ datetimesignup_date
s'il contient l'heure, alors vous voudrez utiliser le date_format dans laWHERE
clause pour dépouiller l'heure pour qu'elle corresponde àCURDATE()
mysql_num_rows
n'affiche pas 0. Juste un blanc.Réponses:
la source
DATETIME
.signup_date
, même si un tel index existe). Préférez la solution de Serjio .< '2017-08-31 00:00:00'
si vous utilisez une version de MySQL avec des millisecondes.Cette requête utilisera l'index si vous l'avez pour le
signup_date
champla source
signup_date
, contrairement à d'autres approches.signup_date
entre deux heures est correcte, mais les heures ne le sont pas. Il doit être compris entre00:00
et23:59:59
à la date actuelle.WHERE DATE(signup_date) = CURDATE()
pris mon serveur ~ 50 ms, celui-ci ici 0,8 ms.On dirait que vous devez ajouter le formatage au
WHERE
:Voir SQL Fiddle avec démo
la source
Vous pouvez utiliser le
CONCAT
avecCURDATE()
pour toute la durée de la journée, puis filtre en utilisant l'BETWEEN
enWHERE
état:la source