IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Encadrement de dates


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 139
    Par défaut Encadrement de dates
    Bonjour,

    je m'adresse à la communauté car je n'arrive pas à résoudre un point sur les dates.

    Mon moteur SQL est MySql 5.0

    Je cherche à obtenir des quantités par mois, sur les 8 mois à venir.

    Mon code actuel est celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    when dt_confirmation
                           between (date_add(date_add(last_day(current_date), interval 1 day),interval 0 month))
                               AND (last_day(date_add(last_day(current_date),interval 1 month)))
                     then (qt_cmde_ini)
        else "" end as qt1,
    Ce code me renvoie les quantités pour le mois de janvier, puis de février.

    Le principe est basé sur une intervalle entre date 1 et date 2 définie comme suit :
    Date 1:
    Je prends le dernier jour du mois en cours, j'ajoute 1 jour (1 janvier 2010)
    Date 2:
    Je prends le dernier jour du mois en cours,j'ajoute 1 mois (31 janvier 2010)

    Si la date "dt_confirmation" est comprise entre cet encadrement alors j'affiche mes quantité : "qt_cmde_ini"

    Et ainsi de suite pour les sept autres mois.

    Ce code utilise la fonction "Last_day" qui engendre des erreurs précisé dans le manuel de Mysql.

    he LAST_DAY() function returns a DATE value, but internally the value did not have the time fields zeroed and calculations involving the value could return incorrect results. (Bug#32270)
    Auriez vous une autre méthode ?

    Merci

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Tu peux calculer ça à la main avec du adddate...
    Par exemple, t'ajoutes un mois, puis tu retranches le jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select now(), day(now()), 
    adddate(
    adddate(now(), interval 1 MONTH) 
     , INTERVAL (-1 * DAY(NOW()))  DAY)

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 139
    Par défaut
    Merci Pacmann !

    J'ai résolu le problème qui ne venait pas "Last_day".

    Mais d'un paramètre extérieur....

    Du coup, je n'ai pas testé ta fonction, mais cela fait désormais 2 possibilités pour effectuer des calculs par mois !

    Ces fonctions sont tordues mais très utiles !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb encadrement Date
    Par ALLODREN dans le forum Langage SQL
    Réponses: 10
    Dernier message: 25/05/2009, 14h54
  2. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  3. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21
  4. Réponses: 3
    Dernier message: 06/05/2002, 18h24
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo