Maison > Questions et réponses > le corps du texte
Il existe un champcreated_at
de type datetime. Comment sélectionner les données d'une date précise ?
SELECT * FROM data WHERE created_at = '2017-06-29';
SELECT * FROM data WHERE created_at BETWEEN '2017-06-29 00:00:00' AND '2017-06-29 23:59:59';
Aucun d'entre eux n'est correct, les ensembles de résultats sont tous vides
曾经蜡笔没有小新2017-06-30 09:55:42
Article de référence : Fonctions liées au traitement du temps MySQL
OÙ DATE(created_at) = '2017-06-29'
ou
OÙ créé_à LIKE '2017-06-29%'
習慣沉默2017-06-30 09:55:42
Le format par défaut de datetime est '2017-06-29 00:00:00' Si vos données contiennent des données ce jour-là, le deuxième élément aura des résultats, vous devez donc d'abord vérifier s'il y a des données ce jour-là. dans le tableau. Et quel est votre format de données ?
PS : Pour obtenir les données d'un certain jour, vous pouvez utiliser create_at comme 'aaaa-mm-jj%' ou votre deuxième façon d'écrire, date(created_at) et left(created_at) peuvent également obtenir la date du jour, mais ils ne seront pas indexés, l'efficacité est très mauvaise
仅有的幸福2017-06-30 09:55:42
Je peux, mais peut-être que votre table ou votre champ est erroné, ou qu'il n'y a effectivement aucun résultat. . Les conditions ne posent aucun problème
高洛峰2017-06-30 09:55:42
select * from data d WHERE d.created_at >= curdate()
and d.created_at < DATE_ADD(STR_TO_DATE(curdate(), '%Y-%m-%d'), INTERVAL 1 DAY);
Cela signifie interroger l'heure qui est supérieure ou égale à 0h00 aujourd'hui et inférieure à 0h00 demain
黄舟2017-06-30 09:55:42
La première ligne est fausse car le format datetime est différent du format dans votre condition.
La deuxième ligne est correcte.
Le résultat est également correct, car il n'y a effectivement aucune donnée.