Extraire le jour d'une date MySQL

Extraire le jour d'une date MySQL - PHP - Programmation

Marsh Posté le 05-05-2006 à 02:34:26    

voila je bloque ...
 
selon la doc http://fr3.php.net/manual/fr/function.date.php
 
ca serait date (<format>, <date> )
 
Mettons que la date est : 2006-05-09 02:09:21 et que je veux recuperer le mois c'est à dire 5
 
j'ai essayé  
date ('j', $donnee_mysql[0]);
 
mais cela m'affiche 1 et non pas 5 :(
 

Reply

Marsh Posté le 05-05-2006 à 02:34:26   

Reply

Marsh Posté le 05-05-2006 à 02:51:17    

'j' c'est pour récupérer le jour, pour le mois c'est F ou m ou M ou n (cf la doc que tu cites)
au passage, $donnee_mysql[0] est bien un UNIX TIMESTAMP ?

Reply

Marsh Posté le 05-05-2006 à 09:04:02    

Salut !
 
Pour récupérer le jour actuel voilà le code :
 
date("d"); (format : 01 à 31)
 
ou
 
date("j"); (format : 1 à 31)


Message édité par vernoff le 05-05-2006 à 09:06:45
Reply

Marsh Posté le 05-05-2006 à 15:25:31    

oui pour extraire le jour d'aujourd'hui, c'est assez facile. Il n'y a pas besoin de mettre un 2ème parametre ...
 
 
non ce n'est pas du timestamp, mais le format de date que propose MySQL, c'est à dire : yy-mm-dd HH:mm
Tu as raison, cela doit etre ca, le souci.
 
voila, un petit appercu pour mieux pour que vous comprenait.

$t=mysql_query ("select ma_date from matable" );
$donnee_mysql = mysql_query_rows ($t);


 
j'ai trouvé 2 solutions pour extraire le jour de mes dates enregistrées dans la base de données :  
 
- recuperer donnee_mysql[0] en tant que chaine de caractère et faire un faire un substring pour recuperer le jour.
 
- ou sinon une solution, un peu plus propre, serait de rajouter une autre variable dans la requete et d'utiliser la commande UNIX_TIMESTAMP
 

$t=mysql_query ("select ma_date, UNIX_TIMESTAMP (ma_date) as date_en_timestamp" );
$donnee_mysql = mysql_query_rows ($t);
 
$jour=date("j",donnee_mysql[1]);


 
 
c'est un pêu mieux, je trouve cela dommage de rajouter une autre variable dans la requete.
N'y a t'il pas une fonction PHP qui transforme une date MySQL en timestanp pour qu'ensuite je puisse utiliser la fonction date de PHP.
 
un truc dans le genre.
 

$mois=date("j", fonction_to_timestamp(donnee_mysql[0]) )


Reply

Marsh Posté le 05-05-2006 à 15:35:34    

tu dois avoir une fonction mysql qui te retourne le jour
sinon en php tu as http://fr.php.net/strtotime

Reply

Marsh Posté le 05-05-2006 à 15:55:18    

Ouais, y a surtout les fonctions Day, Year, Month directement dans mysql, rtfm donc :D

Reply

Marsh Posté le 05-05-2006 à 17:16:48    

merci soju, j'essairai ta solution un peu plus tard. Merci
 
naceroth, non ta solution n'est pas top. Dans tous les cas, je dois afficher dans mon formulaire la date. Donc ce que tu me propose c'est de mettre 2 variable dans ma clause SELECT, une pour afficher ma date en entier et une autre pour récuperer le mois. Nop désolé, je ne trouve pas ca tres propre et je trouve que c'est plus le role de php que de MySQL. Enfin, bon, je sais c'est tres subjectif comme réponse.

Reply

Marsh Posté le 05-05-2006 à 18:23:08    

weed a écrit :


naceroth, non ta solution n'est pas top. Dans tous les cas, je dois afficher dans mon formulaire la date. Donc ce que tu me propose c'est de mettre 2 variable dans ma clause SELECT, une pour afficher ma date en entier et une autre pour récuperer le mois. Nop désolé, je ne trouve pas ca tres propre et je trouve que c'est plus le role de php que de MySQL. Enfin, bon, je sais c'est tres subjectif comme réponse.


 
Tu ne nous donnes pas non plus l'intégralité de ton problème, rien n'indiquait dans ta question la présence obligatoire de la date complète, difficile donc d'être dans ta tête au moment de répondre...  :sarcastic:

Reply

Marsh Posté le 05-05-2006 à 19:49:20    

j'allais dire comme naceroth, mais c pas bien :'( je pleureeee

Reply

Marsh Posté le 05-05-2006 à 21:01:38    

Le format "strftime" de 2006-05-09 02:09:21 est "%Y-%m-%d %H:%M:%S"
 
donc :
 
$sDate = '2006-05-09 02:09:21';
 
$aDate = strptime( $sDate, '%Y-%m-%d %H:%M:%S' );
 
$mois = $aDate['tm_mon'] +1;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed