318 votes

Comment effectuer une requête entre deux dates avec MySQL ?

La requête suivante :

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')

ne renvoie rien.

Je devrais avoir plus de données que nécessaire pour que la requête fonctionne. Qu'est-ce que je fais de mal ?

9voto

Fahd Allebdi Points 306

Vous pouvez le faire manuellement, en comparant avec plus grand que ou égal et moins grand que ou égal.

 select * from table_name where created_at_column  >=   lower_date  and  created_at_column <= upper_date;

Dans notre exemple, nous avons besoin de récupérer les données d'un jour particulier à un autre jour. Nous allons comparer le début de la journée à la dernière seconde d'une autre journée.

  select * from table_name where created_at_column  >=   '2018-09-01 00:00:00'  and  created_at_column <= '2018-09-05 23:59:59';

4voto

DS Mercy Points 31

Just Cast date_field as date

SELECT * FROM `objects` 
WHERE (cast(date_field as date) BETWEEN '2010-09-29' AND 
'2010-01-30' )

3voto

Bruno Barral Points 41

Lorsque vous utilisez la date y Valeurs temporelles, vous devez définir les champs comme DateTime et non Date . Essayez :

SELECT * FROM `objects` 
WHERE (CAST(date_field AS DATETIME) 
BETWEEN CAST('2010-09-29 10:15:55' AS DATETIME) AND CAST('2010-01-30 14:15:55' AS DATETIME))

2voto

user3444566 Points 21
SELECT * FROM `objects` 
WHERE  date_field  
BETWEEN('2010-01-30 14:15:55')AND('2010-09-29 10:15:55')

1voto

SoulWanderer Points 195

Il peut s'agir d'un problème de configuration de la date du côté du serveur ou du côté du client. J'ai constaté que c'est un problème courant sur plusieurs bases de données lorsque l'hôte est configuré en espagnol, français ou autre... cela pourrait affecter le format dd/mm/yyyy ou mm/dd/yyyy.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X