Récupérer enregistrement mysql selon valeur

Résolu/Fermé
t671 Messages postés 1460 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 2 décembre 2024 - 19 oct. 2011 à 17:51
t671 Messages postés 1460 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 2 décembre 2024 - 19 oct. 2011 à 19:16
Bonjour,

J'ai des enregistrements avec un champs date qui comportent un nb de caractères illimités, mais en récupérant les 4 derniers caractères (année), je peux les classer en ordre (du plus petit au plus grand).
Comment faire en sorte de récupérer les enregistrements de dont les 4 derniers caractères sont compris entre 1600 et 1800 ?

Merci.

3 réponses

sakoba2010 Messages postés 157 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 24 juillet 2013 15
19 oct. 2011 à 18:18
C'est une mauvaise manière de programmer, si vous avez des données de type date vous devriez les enregistrer dans une colonne de type date. ensuite vous pouvez trier la colonne avec des requête simple.

Bon courage
0
dans une instruction SQL

champ like "*1600"
or champ like "*1700"
etc.
0
t671 Messages postés 1460 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 2 décembre 2024 11
19 oct. 2011 à 19:16
Ma base vient d'un autre fichier (GED), et les dates sont toutes d'un format différent. C'est pourquoi j'utilise les 4 derniers caractères (année) pour faire des tris.

Là je veux récupérer les champs dont les 4 derniers caractères sont = 9999, et < 1599, et > 1801.
En y rajoutant (qui fonctionne déjà :
$select = 'SELECT * FROM ville_bis WHERE nom LIKE "A%" AND sexe LIKE "M" ORDER BY nom ASC'; 


J'ai testé ceci :
$select = 'SELECT * FROM ville_bis WHERE nom LIKE "A%" AND SUBSTRING(date_naissance, -4) > "1599" AND SUBSTRING(date_naissance, -4) < "1801"
 		   AND SUBSTRING(date_naissance, -4) == "9999" AND sexe LIKE "M" ORDER BY nom ASC'; 

et j'ai l'erreur :
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== "9999" AND sexe LIKE "M" ORDER BY nom ASC'

J'ai essayé :

$select = 'SELECT * FROM ville_bis WHERE nom LIKE "A%" AND date_naissance > "*1599" AND date_naissance < "*1801"
 		   AND date_naissance LIKE "*9999" AND sexe LIKE "M" ORDER BY nom ASC'; 


et là rien ne s'affiche .......... ???
0