8795 sujets
Salut,
Voilà un lien qui répondra a ta question, en résumé dans ta requete tu demandes à mysql de formater directement ta date au format que tu veux
du style :
Modifié par N-J (21 Jul 2009 - 15:30)
Voilà un lien qui répondra a ta question, en résumé dans ta requete tu demandes à mysql de formater directement ta date au format que tu veux

du style :
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
Modifié par N-J (21 Jul 2009 - 15:30)
SELECT *,DATE_FORMAT(date, '%d %M %Y') AS datefr from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1
Ce qu irécupèrera les champs que tu as demandé, dont la date au format anglais (qui dans l'exemple s'appel "date" dans la table), ainsi qu'une colonne "datefr" contenant cette date converti au format français.
Mais rien n'oblige à créé la colonne datefr en plus, tu peux simplement convertir la date en enlevant "AS datefr". Mais c'est souvent pratique de garder la colonne date en anglais notamment pour le tri.
Modifié par moust (21 Jul 2009 - 16:02)
Tu peux également faire ce traitement en PhP.
Ce code est basique au possible et ne fonctionne que pour des dates seules, suffit juste d'adapter pour qu'elle prenne en compte les heures.
Modifié par Andromede (21 Jul 2009 - 23:59)
/* Traduit une date au format US vers le format FR */
function dateUS_toFR($dateUS)
{
list($annee, $mois, $jour) = split('[-.]', $dateUS);
$dateFR=$jour."/".$mois."/".$annee;
return $dateFR;
}
/* Traduit une date au format FR vers le format US */
function dateFR_toUS($dateFR)
{
list($jour, $mois, $annee) = split('[/.]', $dateFR);
$dateUS=$annee."-".$mois."-".$jour;
return $dateUS;
}
Ce code est basique au possible et ne fonctionne que pour des dates seules, suffit juste d'adapter pour qu'elle prenne en compte les heures.
Modifié par Andromede (21 Jul 2009 - 23:59)
merci
j'ai essayé de faire mais il ne marche pas
Modifié par eagle83 (21 Jul 2009 - 16:25)
j'ai essayé de faire mais il ne marche pas
$result = mysql_query("SELECT *,DATE_FORMAT(date, '%d %M %Y') AS dateUS from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1");
function dateUS_toFR($dateUS)
{
list($annee, $mois, $jour) = split('[-.]', $dateUS);
$dateFR=$jour."/".$mois."/".$annee;
return $dateFR;
}
while ($row = mysql_fetch_array($result)){
echo $row["titre"].'<span>'.$row["dateFR"].'</span>';
echo'<p>'.$row["resume"].'</p>';
}
Modifié par eagle83 (21 Jul 2009 - 16:25)
eagle83 a écrit :
mercccciiiiiiiiii bcpp
mais comment je peux afficher la date en français car j'ai essayé de changer''%d %M %Y' par '%J %M %A' mais il ne marche pas????????????????
Normal, car %J n'existe pas, en descendant un peu sur la page que je t'ai filé il y a les possibilités décrites:
%d Jour du mois, au format numérique (00..31)
%M Nom du mois (January..December)
%Y Année, au format numérique, sur 4 chiffres
Je suppose que tu veux une date du format : 27/09/2009, ce qui donne :
"%d/%m/%Y"
Lis bien les possibilités qui sont assez énormes fournies par mysql.
eagle83 a écrit :
merci
j'ai essayé de faire mais il ne marche pas
$result = mysql_query("SELECT *,DATE_FORMAT(date, '%d %M %Y') AS dateUS from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1"); function dateUS_toFR($dateUS) { list($annee, $mois, $jour) = split('[-.]', $dateUS); $dateFR=$jour."/".$mois."/".$annee; return $dateFR; } while ($row = mysql_fetch_array($result)){ echo $row["titre"].'<span>'.$row["dateFR"].'</span>'; echo'<p>'.$row["resume"].'</p>'; }
Bein c'est normal, les fonctions suivantes permettent de faire une conversion de date fr->us ou us->fr , si tu donnes une date fr à traiter (donnée par mysql) il ne vas pas bien traiter ton code. La requête mysql seule suffit pour transformer ta date

eagle83 a écrit :
meric pour tous
mais comment alors je peux modifier la date en français car je pense il n y a pas une possibilité d'intégrer la fonction dans la chaîne SQl?????
Si j'ai bien compris tu cherches maintenant à avoir les jours et mois en anglais. Là pas possible avec SQL donc le plus simple est de passer par PHP et de remplacer par les mois en français contenus dans un tableau.
$mois = array("01"=>"Janvier","02"=>"Février" /*...etc */ );
$date = "2009-07-22";
list($year, $month, $day) = explode('-', $date);
$datefr = $day .' '. $mois[$month] .' '. $year; // 22 Juillet 2009
Modifié par moust (22 Jul 2009 - 00:26)
Salut,
je n'ai pas tout lu mais tu peux aussi faire :
Modifié par Heyoan (22 Jul 2009 - 08:02)
je n'ai pas tout lu mais tu peux aussi faire :
<?php
setlocale(LC_TIME, 'french', 'fr_FR');
$sql = 'Select date from ...';
$result = mysql_query($sql);
$madate = mysql_result($result, 0);
echo ucwords(strftime("%A %d %B %Y", strtotime($madate)));
?>
Accessoirement c'est une mauvaise idée de nommer ton champ date car c'est l'un des mots réservés de mysql (même si celui-ci est toléré). Modifié par Heyoan (22 Jul 2009 - 08:02)
ENFIIIIIIIN !ça marche
Modifié par eagle83 (22 Jul 2009 - 14:12)
<?php
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('base',$connect) or die ("erreur de connexion base");
setlocale (LC_ALL, 'fr_FR');
$result = mysql_query("SELECT *,DATE_FORMAT(datenews, '%d %m %Y') AS dateus from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1");
$mois = array("01"=>"Janvier","02"=>"Février","03"=>"Mars","04"=>"Avril","05"=>"Mai","06"=>"Juin","07"=>"juillet","08"=>"Août","09"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre");
while ($row = mysql_fetch_array($result)){
list($day,$month,$year) = explode(" ",$row["dateus"]);
$row["dateus"] = $day .' '. $mois[$month] .' '. $year;
echo $row["titre"].'<span>'.$row["dateus"].'</span>';
echo'<p><a href="">'.$row["resume"].'</a></p>';
}
mysql_close();
?>

Modifié par eagle83 (22 Jul 2009 - 14:12)