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

Développement SQL Server Discussion :

Récupérer le mois qui précède [2008]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Je produit des statistiques pour le SDIS 47.
    Inscrit en
    Avril 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Je produit des statistiques pour le SDIS 47.
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 73
    Par défaut Récupérer le mois qui précède
    Je fais des requêtes sur le mois qui précède, ce qui jusque là est simple puisque la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATEPART(MONTH,PC.DH_DEBUT) = DATEPART(MONTH,GETDATE()) - 1
    fonctionne très bien.

    Par contre, lorsque je change d'année, celle-ci me renvoie un fichier vide. Comment puis-je faire pour récupérer le mois de l'année - 1.

    Cordialement.

    Taz

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Connais-tu la fonction DATEADD(datepart, number, date) ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Je produit des statistiques pour le SDIS 47.
    Inscrit en
    Avril 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Je produit des statistiques pour le SDIS 47.
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 73
    Par défaut Récupérer le mois qui précède
    Pas du tout.

    La solution que j'avais trouvé était la formule suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CASE  WHEN YEAR(STA.[DH_DEBUT_INTER]) = YEAR(GETDATE())-1 AND MONTH(STA.[DH_DEBUT_INTER]) = 12 THEN 1
              WHEN YEAR(STA.[DH_DEBUT_INTER]) = YEAR(GETDATE())   AND MONTH(STA.[DH_DEBUT_INTER]) = MONTH(GETDATE()) - 1  THEN 1 ELSE 0 END = 1
    Le problème est que le mois de Décembre remonte systématiquement.

    Merci.

    Taz

  4. #4
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour,

    Essayez donc la formule avec DATEADD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT DATEADD(MONTH,-1,CAST('01/01/2016'as date))

  5. #5
    Membre confirmé
    Homme Profil pro
    Je produit des statistiques pour le SDIS 47.
    Inscrit en
    Avril 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Je produit des statistiques pour le SDIS 47.
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 73
    Par défaut
    Est ce que cela veut dire que tous les ans je serai obligé de changer ma date?

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Si votre besoin fonctionnel est d'obtenir le mois qui précède le mois en cours, alors la solution avec DATEADD proposée plus haut fonctionnera, il suffit de lui communiquer la date du jour en variable

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    La solution que vous essayez de mettre en place ne permettra en plus pas l'utilisation d'index. évitez tant que possible de faire des calculs impliquant des colonnes dans vos filtres.

    Les données du "mois précédent" sont celles dont la date se situe entre le premier et le dernier jour du mois précédent.

    pour calculer ces deux dates, voici un peu d'aide

  8. #8
    Membre confirmé
    Homme Profil pro
    Je produit des statistiques pour le SDIS 47.
    Inscrit en
    Avril 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Je produit des statistiques pour le SDIS 47.
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 73
    Par défaut
    J'ai trouvé la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DATEPART(MONTH,AE.DH_DEBUT_INTER) = MONTH(DATEADD(MONTH,-1, GETDATE()))
    AND  DATEPART(YEAR,AE.DH_DEBUT_INTER) = YEAR(DATEADD(MONTH,-1, GETDATE()))
    En vous remerciant pour vos réponses.

    Taz.


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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/12/2014, 11h07
  2. [Thread]Récupérer un Thread qui tourne
    Par thibaut dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 09/02/2006, 11h43
  3. Récupérer l'objet qui a le focus
    Par Johnbob dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/01/2006, 14h40
  4. Récupérer le mois et l'année d'une date
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 09h17

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