[MySQL] Question sur les dates et sur 1 requete SQL

Question sur les dates et sur 1 requete SQL [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 20-05-2005 à 14:01:41    

Bonjour,
 
Pardonnez moi pour le titre, je n'ai rien trouvé de plus explicite. J'aurai donc 2 questions à poser:
 
1/ Je souhaite stocker une date (avec heure) j'ai essayé des champs de type de TIMESTAMP et DATE mais je trouve que la manipulation derriere est pas facile. J'ai donc opté pour un champ INT(10) ou je mets directement le timestamp unix. C'est crade comme méthode :??:  
 
2/ J'ai une table (nommée message) qui contient des messages que s'envoyent les utilisateurs donc j'ai l'ID de l'expéditeur (id_exp) et celle du destinataire (id_dest). Ma question est: est-il possible de recupérer les noms des 2 correspondants dans la meme requete?
il existe une autre table membre avec les champs id_membre et nom_membre.
 
Ma requete actuelle ressemble a ca:
SELECT message.*, membre.nom_membre FROM message, membre WHERE id_dest=id_membre
 
Avec une telle requete je recupère que le nom du destinataire et je suis obligé de faire une autre requete pour le nom de l'expéditeur.
 
Merci par avance :hello:

Reply

Marsh Posté le 20-05-2005 à 14:01:41   

Reply

Marsh Posté le 20-05-2005 à 14:04:31    

pour ton second prob :
http://forum.hardware.fr/hardwaref [...] 9697-1.htm
 
Pour le premier, perso j'utilise des date time, mais c'est vraix que c'est assez chaud à manipuler....

Reply

Marsh Posté le 20-05-2005 à 14:13:00    

IvanleFou a écrit :

Bonjour,
 
1/ Je souhaite stocker une date (avec heure) j'ai essayé des champs de type de TIMESTAMP et DATE mais je trouve que la manipulation derriere est pas facile. J'ai donc opté pour un champ INT(10) ou je mets directement le timestamp unix. C'est crade comme méthode :??:  
 


 
Qu'est-ce qui te gêne en stocker un TIMESTAMP dans un champs de type TIMESTAMP?
Perso, je préfère travailler avec des champs DATETIME, car ça a l'avantage d'être plus lisible, et puis tu peux plus facilement utiliser des fonctions MySQL sur ce type (sans passer par FROM_UNIXTIME()).
Par contre ça utilise  deux fois plus de place en termes de stockage.


Message édité par jeff@be le 20-05-2005 à 14:13:44
Reply

Marsh Posté le 20-05-2005 à 14:14:08    

Effectivement c'est un peu le même problème :)  
 
Reste à trouver la solution :hello:

Reply

Marsh Posté le 20-05-2005 à 14:17:35    

Code :
  1. SELECT
  2.   message.*,
  3.   membre1.nom_membre AS expediteur,
  4.   membre2.nom_membre AS destinataire
  5. FROM
  6.   message,
  7.   membre AS membre1,
  8.   membre AS membre2
  9. WHERE
  10.   membre1.id_membre = message.id_dest
  11.   AND membre2.id_membre = message.id_exp


 
 
 

Reply

Marsh Posté le 20-05-2005 à 14:18:24    

jeff@be a écrit :

Code :
  1. SELECT
  2.   message.*,
  3.   membre1.nom_membre AS expediteur,
  4.   membre2.nom_membre AS destinataire
  5. FROM
  6.   message,
  7.   membre AS membre1,
  8.   membre AS membre2
  9. WHERE
  10.   membre1.id_membre = message.id_dest
  11.   AND membre2.id_membre = message.id_exp



 
 
Sa c'est de la bonne req thx.

Reply

Marsh Posté le 20-05-2005 à 14:21:41    

jeff@be a écrit :

Qu'est-ce qui te gêne en stocker un TIMESTAMP dans un champs de type TIMESTAMP?
Perso, je préfère travailler avec des champs DATETIME, car ça a l'avantage d'être plus lisible, et puis tu peux plus facilement utiliser des fonctions MySQL sur ce type (sans passer par FROM_UNIXTIME()).
Par contre ça utilise  deux fois plus de place en termes de stockage.


 
Le DATETIME deja il est bien organisé pour faire des recherches dans la table mais c'est tout à l'envers de ce que l'on lit donc faut faire un traitement pour remettre dans le bon ordre. Ensuite si je veux ajouter un certain nb de secondes à ma date avec le timestamp c'est super facile. Avec le DATETIME je sais pas comment faire. Maintenant il me manque peut etre les fonctions qui vont bien pour le rendre pratique. :??:  
Sinon c'est vrai que le timestamp c'est pas ce qu'il y a de plus lisible :(

Reply

Marsh Posté le 20-05-2005 à 14:26:47    

MySQL contient des fonctions intégrées qui te permettent de formater les dates très facilement.
Cfr. manuel de MySQL à la sections Fonctions de dates et d'heures
 
http://dev.mysql.com/doc/mysql/fr/ [...] tions.html

Reply

Marsh Posté le 20-05-2005 à 14:32:07    

jeff@be a écrit :

MySQL contient des fonctions intégrées qui te permettent de formater les dates très facilement.
Cfr. manuel de MySQL à la sections Fonctions de dates et d'heures
 
http://dev.mysql.com/doc/mysql/fr/ [...] tions.html


 
Merci je vais potasser ca :jap:  
 
 
Merci aussi pour ta requete, ca marche impeccable. je n'avais pas pensé a l'astuce de l'alias pour le nom des tables. J'avais essayé exactement cette requete mais sans alias donc je me faisais jeter violement.
 
Merci beaucoup Jeff :hello:


Message édité par IvanleFou le 20-05-2005 à 14:32:46
Reply

Marsh Posté le 20-05-2005 à 14:46:02    

Tiens, c'est marrant, j'ai failli faire un topic pour poser la même question. :D
 
Perso, j'utilise la méthode du time() dans un int(10) également.
 
Quelqu'un peut-il me résumer quelles sont les inconvénients de cette méthodre concrètement ?
Qu'elle sont les avantages du TimeStamp si il y en a ?

Reply

Marsh Posté le 20-05-2005 à 14:46:02   

Reply

Marsh Posté le 20-05-2005 à 15:05:13    

Attention: ne pas confondre Unix timestamp (résultat de la fonction time() de PHP) avec le type de champs TIMESTAMP de MySQL!

Reply

Marsh Posté le 20-05-2005 à 15:10:41    

Perso j'utilise la méthode de l'INT(10) et time() car je suis beaucoup plus à l'aise en PHP qu'avec des requetes SQL.
 
Je trouve que c'est facile à gérer, ca tient pas beaucoup de place dans la base (il me semble). Par contre c'est sur que si tu parcours ta table avec phpMyAdmin ca dit pas grand chose ces nombres :pt1cable:

Reply

Sujets relatifs:

Leave a Replay

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