[MySQL] Selection du mois dans un date

Répondre
Patochewie
le 16/08/2006 à 10:14
Patochewie
Salut tout le monde. Je cherche une commande MySQL permettant de sélectionner des valeurs dont le champ est compris dans un mois donné, existe-t-il une fonction capable de réaliser un truc dans ce genre:
"SELECT * FROM table WHERE mois(champ_date)='02'"
Je n'ai pas trouvé de telle fonction dans la notice en ligne MySQL...
Merci de votre attention.
Bzh
le 16/08/2006 à 10:59
Bzh
Tu peux peut être regarder du coté des expressions régulières.

Mais, à mon avis, il doit y avoir une astuce pour ça...

Mais sinon, expressions régulières ...

Tchusss ...
LA GLOBULE
le 16/08/2006 à 11:04
LA GLOBULE
Recherche la fonction date_format dans les fonctions de date de MySQL.
Elle te retourne plein de trucs, un peu comme la fonction date de php.

Par contre, attention à ne pas faire des jointures ou des order by sur le résultat d'un date_format (impossible à optimiser : MySQL sera obligé de calculer le date_format pour chaque ligne).

(les expressions regulieres, c'est une mauvaise idée, surtout sur un champs de type date ou datetime)
Superleseb
le 16/08/2006 à 12:45
Superleseb
Si tu as ton champ SQL de type "Date", je sais que tu peux sélectionné le mois comme ceci :

Requete
<?php
$sql = 'SELECT * FROM TaTable WHERE RIGHT(champ_date,2)="31" AND MONTH(champ_date)="12" AND YEAR(champ_date)="1999"';

// Pour RIGHT(champ_date,2) je crois que il n'existe pas la fonction DAY(champ_date) mais je te dis tout ça de mémoire, à toi de vérifier après et trouve autre chose si tu as mieux.
?>


Ciao :)
Si t&#039;es fier d&#039;&ecirc;tre un Nazebroke, tape dans tes mains !!
Patochewie
le 17/08/2006 à 16:38
Patochewie
Merci bien pour vos réponses, j'ai finalement utilisé une requêtes de type :
"SELECT AVG(champ1) as moyenne_champ1, date_format(champ_date, "%c-%Y") as date_mois from table group by date_mois"
Cela me permet de sortir les moyennes du champ1 pour chaque mois.
LA GLOBULE
le 17/08/2006 à 18:22
LA GLOBULE
Tu est tombé dans le piége que j'avais enoncé plus haut...
Ta requete est certes jolie, mais énorme consommatrice de ressource.

Mysql est obligé de se cogner tous les enregistrements de la table pour faire l'order by.

Je serais toi, je ferais le calcul de la moyenne par mois en PHP.
jls
le 19/08/2006 à 22:50
jls
Pour ce qui est de la sélection du mois, la fonction MONTH(colonne_date) facilite pas mal les choses sur des colonnes de type date ou assimilé...
On peut la mettre dans le select ou dans le where
jls
le 19/08/2006 à 22:52
jls
Désolé, je n'avais pas vu que Superleseb donnait déjà la fonction... Toutes mes confisions...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours