Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2006, 12h34   #1
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
Par défaut mysql : selectionner des mois.

Bonjour,
J'ai une table (mysql) qui s'appelle "evenements" qui posséde deux colonnes : dt (la date au format DATE) et id (un identifiant quelquonque.. au format INT)

J'ai besoin de selectionner les identifiants sur une periode données : du mois en cours à mois en cours + 3.
par exemple si on est mi novembre, il me faut tous les identifiants du 01/11/2006 au 31/01/2007. (même si c'est a cheval sur deux ans!!!)
voilà, je ne sais pas quoi mettre dans ma clause where pour faire ceci.. je cherche depuis ce matin, et là je cale.

Merci d'avance...
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2006, 13h01   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Bonjour,

Pour tester si une valeur est comprise entre 2 bornes, utilise BETWEEN.

Pour ajouter 3 mois au mois en cours regarde du côté des fonctions de date/heure.

Ce tuto pourrait aussi t'aider.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2006, 13h37   #3
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
Bonjour Maximilian,
Je connais BETWEEN.
au debut j'avais pensé a prendre la date du jour et la date du jour+90 et utuliser un between, mais bon ca ne marche pas quand on est en milieu de mois.
Code :
WHERE dt BETWEEN CURDATE() AND  DATE_ADD(CURDATE(), INTERVAL 90 DAY)
Le probleme est qu'avant de "rajouter 3 mois à la date en cours", il faut revenir au premier jour du mois.

En fait je pense que la bonne solution revient a travailler non pas sur les jours mais bien sur les mois. (sinon on deborde d'un jour sur le 4eme mois d'ailleur)

un truc du genre : mois(dt)>=curmois and mois(dt)<curmois+3, ca je pense que c'est faisable, mais il y a un probleme quand on change d'année.. car apres 12, il y a 1.
PS : curmois() serait le mois de curdate()...

Vous voyez ce que je veux dire...
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2006, 09h20   #4
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
Bon, finalement j'ai réussi a trouver u nsysteme.
ca me semble fiable (je ne travaille pas sur des jours)
mais par contre ce n'est pas la solution idéale pour moi car j'ai dû utiliser du php... tant pis...

voici le code :
Code :
1
2
3
4
5
6
7
8
9
$NBMOISMAX=4; // nb de mois a couvrir...

$d1=date("Ym"); // date de début.
$d2=date("Ym",mktime(0,0,0,date("m")+$NBMOISMAX,date("d"),date("Y")));
 // date de fin.

// requette SQL :
where  DATE_FORMAT(dt,'%Y%m')>=$d1 
          and DATE_FORMAT(dt,'%Y%m')<$d2
voilà.
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h42.


 
 
 
 
Partenaires

Hébergement Web