furious Gontran Posté 31 Mars 2005 Posté 31 Mars 2005 salut, Je rentre des données dans ma base avec une date. Celle ci contient un champs date. Cette date a la forme annee-mois-jour dans la base. Je voudrais afficher juste les entrées de ma base pour les deux derniers mois. Est ce que je suis obligé de recuperer la date de toutes mes entrées de les exploder pour isoler le mois et le comparer au mois en cours ?? Ou existe t'il une maniere plus simple de faire ?
Dan Posté 31 Mars 2005 Posté 31 Mars 2005 Salut, C'est tout simple ! Select * from `latable` where date > '2005-02-00' te donnera les entrées pour février et mars 2005. Essaie d'optimiser la requête pour éviter le "Select *" en mettant plutôt "Select champ1, champ2, champ3..."
furious Gontran Posté 31 Mars 2005 Auteur Posté 31 Mars 2005 C'est beau quand c'est si simple... Le truc c'est que tous les champs de ma table (pour ce cas la) sont utilisés. Mais j'y penserais pour les prochaines requetes.
furious Gontran Posté 31 Mars 2005 Auteur Posté 31 Mars 2005 Encore une question... pour determiner la date d'affichage je fais $moisactuel=date("m"); $mois2=$moisactuel-1; et je me sers de ce mois pour la requete, en ajoutant un if particulier pour le mois de janvier. Cependant mois 2 perd son 0 pour tous les mois<10. Ce qui me donnerais une requete du type: Select * from `latable` where date > '2005-2-00' L'absence de 0 peut elle poser probleme. (Je prefere demander, je n'ais pas beaucoup de moyen de le tester a part une patience de quelques mois)
Thanh Posté 31 Mars 2005 Posté 31 Mars 2005 Tu peux faire $mois2 = str_pad($moisactuel-1, 2, "0", STR_PAD_LEFT); +
furious Gontran Posté 1 Avril 2005 Auteur Posté 1 Avril 2005 ok... En fait j'ais fais $mois=date("m"); $année=date("Y"); $mois2=$mois-1; if ($mois<11) { $dateFinale=$année."-0".$mois2."-00"; } J'ais aussi ajouté un if pour le mois de janvier afin de decrementer l'année d'un...
lupucide Posté 28 Mai 2005 Posté 28 Mai 2005 Remonte petit thread. J'enregistre des dates dans un champ MySQL de type datetime incrémenté par date('Y-m-d H:i:s') et je voudrais afficher seulement les résultats pour ce mois. J'ai beau tâter et expérimenter je n'affiche qu'un message d'erreur me réclamant de prendre des cours afin d'écrire des requêtes correctes Si quelqu'un pouvais me guider un peu, ce serait fort généreux.
Boo2M0rs0 Posté 28 Mai 2005 Posté 28 Mai 2005 (modifié) Bonjour, Je ne suis pas sur d'avoir compris :s c'est peut être ça: SELECT * FROM `ta_table` WHERE MONTH(NOW()) = MONTH(`champ`) Modifié 28 Mai 2005 par Boo2M0rs0
lupucide Posté 28 Mai 2005 Posté 28 Mai 2005 (modifié) Ça à l'air de fonctionner comme ça mais je ne peux pas tester plus à fond car je n'est même pas un mois de cumuler dans ma base. Merci, Boo2M0rs0. Mais pourrais tu m'expliquer d'où tu sort month car après recherche je n'ai rien trouver en rapport avec PHP/MySQL, une doc ou autre ? Modifié 28 Mai 2005 par lupucide
Boo2M0rs0 Posté 29 Mai 2005 Posté 29 Mai 2005 Month() est une fonction mysql qui extrait le numéro du mois d'une date. Donc dans ce cas , on regarde si le numéro de mois actuel ( month(now()) ) est égal au numéro de mois du champ ( month(`champ`) ) http://www.nexen.net/docs/mysql/annotee/da...e-functions.php Par contre je me pose une question sur l'optimisation, est ce que mysql recalcule month(now()) pour chaque entrée à tester ? Si c'est le cas, il vaudrai mieux passer par la fonction date() de php: $mois = date('m');mysql_query("SELECT * FROM `ta_table` WHERE '$mois' = MONTH(`champ`)")
lupucide Posté 29 Mai 2005 Posté 29 Mai 2005 Rooh, je n'avais pas penser à potasser la doc de MySQL Vu tes doutes je vais passer le WHERE avec la fonction date(). Merci de ton aide.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant