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 :

selection en fonction du mois à cheval sur 2 années


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 97
    Par défaut selection en fonction du mois à cheval sur 2 années
    Bonjour à tous,

    j'ai un problème, peut-être de logique quand à la réalisation d'une requete.

    Voilà mon problème :
    - j'ai des enregistrement dans une table avec deux champs "date" (ex : 2009-05-23) date_debut et date_fin.
    - L'utilisateur choisit le mois dans une liste sur lequel doit porter la requete, ex : juin qui retourne la valeur '6'
    - la requete doit vérifier et afficher tous les champs dont le mois choisit est compris entre le mois de la date_debut et date_fin.

    Le problème apparait lorsque l'intervalle chevauche deux année. Ex date_debut = 01-09-2009, date_fin = 30-06-2010 et mois choisi = avril (4).

    Quelles sont les "bonnes pratiques" pour faire des selections lorsque seul le mois est renseigné?

    D'avance merci pour vos lumières!!

    Cordialement,
    Tommy

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    de demander année + mois à l'utilisateur. Un mois tout seul ne veut rien dire !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par défaut
    Clairement la logique est un peu bizarre. Mais voila selon moi une solution pour obtenir ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT * FROM LaTable
    WHERE
    		(
    			date_debut >= CAST(YEAR(date_debut) AS INT) + '-' + CAST(@Mois AS INT) + '-' + CAST(DAY(date_debut) AS INT)
    		AND date_fin <= CAST(YEAR(date_debut) AS INT) + '-' + CAST(@Mois AS INT) + '-' + CAST(DAY(date_fin) AS INT)
    		)
    	OR	
    		(
    			date_debut >= CAST(YEAR(date_fin) AS INT) + '-' + CAST(@Mois AS INT) + '-' + CAST(DAY(date_debut) AS INT)
    		AND date_fin <= CAST(YEAR(date_fin) AS INT) + '-' + CAST(@Mois AS INT) + '-' + CAST(DAY(date_fin) AS INT)
    		)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 97
    Par défaut
    Bonsoir et merci pour votre aide,

    J'ai essayé de m'inspirer de ta requête David, mais je n'obtiens pas encore ce que je veux.

    Je vais essayé d'être plus clair dans mes explications

    Dans ma table j'ai , entre autre, deux champs de type Date à savoir date_debut et date_fin.
    L'utilisateur choisit le mois et l'année, dans des dropdownlists, sur lesquels doit porter la requête, ex : Juin retourne la valeur '6' et 2010 retourne '2010'
    La requête doit afficher les enregistrements dont le mois et l'année choisit sont compris entre date_debut et date_fin.

    Le problème apparaît lorsque l'intervalle chevauche deux années.

    Ex d'enregistrement : date_debut = 01/12/2009, date_fin = 31/07/2010
    On sélectionne le mois d'avril (valeur = 4) et l'année 2010
    Et bien dans ce cas de figure l'enregistrement n'apparaît pas dans les résultats et cela quelque soit le mois sélectionné et même si la sélection correspond à date_debut ou à date_fin.

    Ma requête actuelle :

    SELECT *
    FROM MaTable
    WHERE ((@SelectedYear BETWEEN YEAR(date_debut) AND YEAR(date_fin)) AND (@SelectedMonth BETWEEN MONTH(date_debut) AND MONTH(date_fin)))

    Comment dois-je la modifier pour que la mayo prenne ?

    Merci et bonne nuit,
    Tommy

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Il faut vectoriser votre information MOIS/AN. Inspirez vous du constructeur de lignes valuées dont je donne exemple ici : http://sqlpro.developpez.com/cours/sqlaz/select/#L8

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WHERE ( (YEAR(DATE_DEBUT) < @AN
          ( OR  (YEAR(DATE_DEBUT) = @AN AND MONTH(DATE_DEBUT) <= @MOIS) )
      AND ( (YEAR(DATE_FIN) > @AN
          ( OR  (YEAR(DATE_FIN) = @AN AND MONTH(DATE_FIN) >= @MOIS) )
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/12/2014, 18h15
  2. Réponses: 1
    Dernier message: 21/11/2014, 13h07
  3. [AC-2003] Sommer sur 4 semaines précédentes à cheval sur 2 années
    Par ostrich95 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 01/04/2014, 11h18
  4. [Toutes versions] Excel VBA - durée à cheval sur 2 années
    Par chris_ij32 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2011, 18h45
  5. requette sql sur un champ date en fonction du mois
    Par mims1664 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/03/2007, 12h40

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