Comment utiliser un opérateur supérieur à avec date?


106

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 je reçois systématiquement tous les enregistrements de la table retournés, y compris ceux avec la date de début 2012-11-01. Ce qui donne?


1
Votre colonne start_date est-elle de type date ou horodatage?
Shamis Shukoor

Réponses:


191

vous l'avez entouré start_dated'un guillemet simple le faisant devenir une chaîne, utilisez à la backtickplace

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

1
que se passe-t-il si son horodatage?
ichimaru

Il convient de noter que MySQL semble un peu pointilleux sur le format de la date; alors que 2019/02/08 21:04:07 ou 2019-02-08 21:04:07 produit le résultat attendu, 02-08-2019 21:04:07, en utilisant le format de date américain, jette un filet beaucoup plus large .
David A. Gray

22

Dans votre déclaration, vous comparez une chaîne appelée start_date avec l'heure.
Si start_date est une colonne, elle doit être

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

(pas d'apostrophe) ou


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

(avec backticks).

J'espère que cela t'aides.



2

Dans mon cas, ma chronique était une date / heure, elle me donnait tous les enregistrements. Ce que j'ai fait est d'inclure le temps, voir l'exemple ci-dessous

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

0

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

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

Réf

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.