Récupérer enregistrement mysql selon valeur

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

3 réponses

sakoba2010 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   15
 
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
zunior
 
dans une instruction SQL

champ like "*1600"
or champ like "*1700"
etc.
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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