Comment sélectionner des données entre une plage de dates dans MySQL. Ma colonne datetime
est au format zoulou de 24 heures.
select * from hockey_stats
where game_date between '11/3/2012 00:00:00' and '11/5/2012 23:59:00'
order by game_date desc;
Ne renvoie rien malgré le fait qu'il y ait des données entre ces périodes. Dois-je forcer les valeurs dans les champs "de" et "à" à datetime
, dans la requête?
Vous devez mettre à jour le format de date:
select * from hockey_stats
where game_date between '2012-03-11 00:00:00' and '2012-05-11 23:59:00'
order by game_date desc;
Voici un moyen simple en utilisant la fonction date:
select *
from hockey_stats
where date(game_date) between date('2012-11-03') and date('2012-11-05')
order by game_date desc
Un moyen simple:
select * from hockey_stats
where game_date >= '2012-03-11' and game_date <= '2012-05-11'
Vous devrez probablement utiliser STR_TO_DATE function:
select * from hockey_stats
where
game_date between STR_TO_DATE('11/3/2012 00:00:00', '%c/%e/%Y %H:%i:%s')
and STR_TO_DATE('11/5/2012 23:59:00', '%c/%e/%Y %H:%i:%s')
order by game_date desc;
(Si game_date est une chaîne, vous devrez peut-être utiliser STR_TO_DATE dessus)
Le format de date MySQL est le suivant: Y-M-D. Vous utilisez Y/M/D. C'est faux. modifiez votre requête.
Si vous insérez la date comme Y/M/D, il s'agira d'insérer une valeur null dans la base de données.
Si vous utilisez PHP et que la date que vous obtenez du formulaire est comme ceci O/M/D, vous pouvez le remplacer par l'utilisation de l'instruction.
out_date=date('Y-m-d', strtotime(str_replace('/', '-', $data["input_date"])))
D'une manière simple, il peut être interrogé comme
select * from hockey_stats
where game_date between '2018-01-01' and '2018-01-31';
Cela fonctionne si le temps n'est pas une préoccupation.
Le temps pris en compte est également suivi de la manière suivante: Notez que ceci est pour le serveur MySQL.
Vous devez rechercher date à défendre sur la manière dont vous avez inséré ces données game_date dans votre base de données. Par exemple, si vous avez inséré une valeur de date longue ou courte.
SELECT * FROM hockey_stats WHERE game_date >= "6/11/2018" AND game_date <= "6/17/2018"
Vous pouvez également utiliserENTRE:
SELECT * FROM hockey_stats WHERE game_date BETWEEN "6/11/2018" AND "6/17/2018"
aussi simple que cela.
Vous pouvez soit user STR_TO_DATE function et transmettre vos propres paramètres de date en fonction du format que vous avez publié:
select * from hockey_stats where game_date
between STR_TO_DATE('11/3/2012 00:00:00', '%c/%e/%Y %H:%i:%s')
and STR_TO_DATE('11/5/2012 23:59:00', '%c/%e/%Y %H:%i:%s')
order by game_date desc;
Ou utilisez simplement le format que MySQL gère les dates AAAA: MM: JJ HH: mm: SS et donnez la requête comme
select * from hockey_stats where game_date between '2012-03-11 00:00:00' and'2012-05-11 23:59:00' order by game_date desc;