Modifier résultat requete SQL

Bonjour,

voila actuellement je lance une requete sur un serveur SQL
ex : le champs contient : 1929-12-29 00:00:00,000

et il m'affiche sur ma page php : Dec 29 1929 12:00AM

le résultat que je souhaitrais avoir est : 29 décembre 1929

est-ce possible??

Merci par avance
Configuration: Windows XP / Internet Explorer 7.0

11 réponses

  1. Bonjour

    Oui, c'est possible.
    Utile la fonction substr() pour séparer année, mois et jour de ta date
    Par exemple $annee=substr($madate,0,4); je te laisse déterminer pour le jour et le mois
    Ensuite, pour avoir le nom du mois, utilise un tableau que tu as initialisé avec les noms des mois:
    $nomsmois=array('janvier','février', etc);
    echo $nomsmois($mois-1);
    0
    1. c'était echo $nomsmois[$mois-1]; bien sûr
      0
      1. Bonjour,
        BIENSUR c'est possible.

        Si ton champ dans la base est au format date, utiliser la fonction TO_CHAR() pour le formatter.

        Si ton champ est au format varchar (ou autre format caractère), alors d'abord le convertir en date avec TO_DATE() puis le reformatter en chaine avec TO_CHAR().

        Je te laisse te documenter sur ces deux fonctions.

        Cordialement,
        M.
        0
        1. Bonjour,
          D'après moi, la solution SQL est à préférer à la solution PHP ;
          Ceci t'évitera d'écrire le tableau des mois et ton propre algo de formattage, car les fonctions SQL existent déjà.
          N'empêche que la solution de lepère était sympa.
          0
          1. car les fonctions SQL existent déjà
            Ça m'intéresse ! Comment obtiens-tu les mois en français avec mysql ?
            0
            1. Re,

              TO_CHAR(ma_date, 'DD MONTH YYYY')

              Ca devrait faire l'affaire...
              En tout cas sur un Oracle config en français, ca fait l'affaire.
              0
              1. okok j'essayrais tout sa au boulo demain,
                merci bien
                0
                1. Voila ce que j'ai fait, je pense que sa peut etre optimisé, si vous avez des suggestions je suis preneur ^^

                  $mois=substr($row[5],0,3);
                  $mois_naiss=substr($row[3],0,3);
                  $jour=substr($row[5],4,2);
                  $jour_naiss=substr($row[3],4,2);
                  $annee=substr($row[5],6,5);
                  $annee_naiss=substr($row[3],6,5);
                  $nomsmois=array('janvier','février','mars','avril','mai','juin', 'juillet', 'aout', 'septembre', 'octobre', 'novembre', 'décembre');
                  if( $mois == "Jan" || $mois_naiss == "Jan" )
                  $mois = $nomsmois[0];
                  $mois_naiss = $nomsmois[0];
                  if( $mois == "Feb" || $mois_naiss == "Feb")
                  $mois = $nomsmois[1];
                  $mois_naiss = $nomsmois[1];
                  if( $mois == "Mar" || $mois_naiss == "Mar")
                  $mois = $nomsmois[2];
                  $mois_naiss = $nomsmois[2];
                  if( $mois == "Apr" || $mois_naiss == "Apr")
                  $mois = $nomsmois[3];
                  $mois_naiss = $nomsmois[3];
                  if( $mois == "May" || $mois_naiss == "May")
                  $mois = $nomsmois[4];
                  $mois_naiss = $nomsmois[4];
                  if( $mois == "Jun" || $mois_naiss == "Jun")
                  $mois = $nomsmois[5];
                  $mois_naiss = $nomsmois[5];
                  if( $mois == "Jul" || $mois_naiss == "Jul")
                  $mois = $nomsmois[6];
                  $mois_naiss = $nomsmois[6];
                  if( $mois == "Aug" || $mois_naiss == "Aug")
                  $mois = $nomsmois[7];
                  $mois_naiss = $nomsmois[7];
                  if( $mois == "Sep" || $mois_naiss == "Sep")
                  $mois = $nomsmois[8];
                  $mois_naiss = $nomsmois[8];
                  if( $mois == "Oct" || $mois_naiss == "Oct")
                  $mois = $nomsmois[9];
                  $mois_naiss = $nomsmois[9];
                  if( $mois == "Nov" || $mois_naiss == "Nov")
                  $mois = $nomsmois[10];
                  $mois_naiss = $nomsmois[10];
                  if( $mois == "Dec" || $mois_naiss == "Dec")
                  $mois = $nomsmois[11];
                  $mois_naiss = $nomsmois[11];
                  $date = $jour." ".$mois." ".$annee;
                  $date_naiss = $jour_naiss." ".$mois_naiss." ".$annee_naiss;
                  0
                  1. "optimisé" n'est pas le mot. On optimise ce qui marche pour l'améliorer, mais si tu as essayé ton code tu dois bien savoir qu'il ne marche pas.
                    L'utilisation d'un tableau n'a aucun intérêt si tu fais 12 tests consécutifs pour les 12 cas possibles.

                    En supposant que tes extractions de jopur, mois et année soient corrects au départ :
                    $mois=substr($row[5],0,3);
                    $mois_naiss=substr($row[3],0,3);
                    $jour=substr($row[5],4,2);
                    $jour_naiss=substr($row[3],4,2);
                    $annee=substr($row[5],6,5);
                    $annee_naiss=substr($row[3],6,5);
                    $nomsmois=array('Jan'=>'janvier','Feb'=>'février',...'Dec'=>'décembre');
                    $date = $jour." ".$nomsmois[$mois]." ".$annee;
                    $date_naiss = $jour_naiss." ".$nomsmois[$mois_naiss]." ".$annee_naiss;


                    Il aurait mieux valu faire une fonction qui formate la date à ta convenance, ça allège le programme et ça évite d'avoir des affichages incohérents, mais c'est une autre histoire.
                    0
                    1. uii sava mieux comme sa
                      thanks !!
                      0
                  2. TO_CHAR(ma_date, 'DD MONTH YYYY')
                    C'est un peu plus court, non ?
                    0
                    1. Tout à fait d'accord. Mais il faut disposer d'Oracle, car les fonctions qui ressemblent (TO_CHAR n'existe pas) en mysql ne fournissent que de l'anglais...
                      0