magicsmacks
Messages postés128Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention 8 avril 2008
-
14 avril 2007 à 14:53
magicsmacks
Messages postés128Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention 8 avril 2008
-
14 avril 2007 à 19:24
Bonjour,
Je possède une BDD MySQL. Dans cette base j'aimerai extraire des données d'une des tables.
En fait dans cette table il y a un champs nommé date qui contient des
dates spécifiées ainsi jj/mm/yyyy. Quand j'ai créé cette table j'ai
identifié ce champs en type 'text' et non en type 'date'
Existe-t-il un moyen d'extraire des lignes de ma table en fonction de
la date en utilisant une requète SQL. Ou dois-je obligatoirement
filtrer à l'aide d'un script PHP (plus lourd!)?
Par exemple si je veux extraire les données ultérieure à 01/01/2005 est-ce possible à l'aide d'une seule requête SQL ?
Si j'utilisais la même table mais en spécifiant le champs date en type 'date', est-ce que ce serait également possible ?
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 14 avril 2007 à 15:40
Salut,
Il y a un moyen vraiment très simple, et qu'il faudrait que tu fasses... :
1* Ajouter une colonne date_temp a ta_table FORMAT TIMESTAMP
2 * executer : update ta_table set date_temp =
STR_TO_DATE(`date`, '%d/%m/%Y');
3 * détruire le champ `date`
4 * renomer le champ date_temp en `date`
Tu te feras beacoup moins suer avec un champ de type TIMESTAMP... C'est lisible par tout le monde ('2007-04-14 13:45:56'), ça s'additionne, se soustrait, se calcul facilement coté MySQL, MySQL fournie les jolies option DEFAULT CURRENT_TIMESTAMP et ONUPDATE CURRENT_TIMESTAMP se qui fait que ton champs "dernière modification" se mettra à jour tout seul comme un grand (de même "créé le").
Coté PHP : strttime() lit exactement le format TIMESTAMP de MySQL... Puis strftime() te l'affiche comme tu veux (même en français si tu utilises set_local(LC_ALL,'fr') !)
echo srtftime('%d/%m/%Y',strttime($mysql['date'])); // pour retrouver ton format...
où, directement coté MySQL :
select date_format(`date`,'%d/%m/%Y') from ta_table where `date`> '2007-01-01'