134 votes

Comment utiliser l'opérateur plus grand que avec une date ?

Aucune idée de ce qui se passe ici. Voici la requête, directement depuis phpMyAdmin :

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

Mais j'obtiens systématiquement le retour de tous les enregistrements de la table, y compris ceux dont la date de début est le 2012-11-01. Comment cela se fait-il ?

224voto

John Woo Points 132738

Vous avez enlosé start_date avec un guillemet simple qui le transforme en chaîne de caractères, utilisez backtick au lieu de

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';

26voto

Kneel-Before-ZOD Points 1935

Dans votre déclaration, vous comparez une chaîne appelée date de début avec le temps.
Si date de début est une colonne, elle doit être soit

 ``SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';`` 

(sans apostrophe) ou

SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(avec des backticks).

J'espère que cela vous aidera.

12voto

Faizan Khattak Points 852

Essayez ça.

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';

3voto

Gregor Godler Points 1101

J'ai essayé mais ci-dessus ne fonctionne pas après recherche trouvé ci-dessous la solution.

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

Réf.

3voto

dilantha111 Points 356

J'ajoute ceci car cela n'a pas été mentionné.

SELECT * FROM `la_schedule` WHERE date(start_date) > date('2012-11-18');

Parce que c'est ce qui marche pour moi. Ajout de la fonction date() sur les deux valeurs de comparaison.

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