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

Langage SQL Discussion :

probleme de date SQL server


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut probleme de date SQL server
    Bonjour, je suis actuellement en stage au Québec et j'ai pour sujet la création d'une application gérant une base de donnée.
    Cette BDD recense tous les projets de l'entreprise.

    J'ai un problème au niveau de ma recherche.

    En effet, la personne s'occupant de la gestion des projets veut rechercher des projets en fonction d'une date donné. Il faut savoir que l'année financière de l'entreprise débute en juillet de l'année N et fini en juin de l'année N+1.

    par exemple, quand on cherche les projets de l'année 2008, leurs date de début doit être comprise entre le 01/07/08 et le 30/06/09.

    Cette requète fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT    idProjet, noDossier, nomProjet, idClient, idEmploye, idCategorie, idType, dateDebut, dateFin, montant
    FROM    tProjet
    WHERE    dateDebut BETWEEN CONVERT(DATETIME, '01/07/2008', 103) AND CONVERT(DATETIME, '30/06/2009', 103)
    Pour ma part je voudrais que l'on puisse rentrer la date désiré à la place de 2008 et 2009, ce qui donnerai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    declare    @date nvarchar
    SET        @date
    SELECT    idProjet, noDossier, nomProjet, idClient, idEmploye, idCategorie, idType, dateDebut, dateFin, montant
    FROM    tProjet
    WHERE    dateDebut BETWEEN CONVERT(DATETIME, '01/07/,@date 103) AND CONVERT(DATETIME, '30/06/'@date+1, 103)
    le @date représentant la date saisi par l'utilisateur.

    Merci de votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    J'ai renommé ta variable @date en annee
    Et cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    declare @annee int
    declare @annee_debut varchar(4)
    declare @annee_fin varchar(4)
     
     
    SET        @annee=2008
    set @annee_debut=cast(@annee as varchar(4))
    set @annee_fin=cast(@annee+1 as varchar(4))
    SELECT    idProjet, noDossier, nomProjet, idClient, idEmploye, idCategorie, idType, dateDebut, dateFin, montant
    FROM    tProjet
    WHERE    dateDebut BETWEEN CONVERT(DATETIME, '01/07/'+@annee_debut, 103) AND CONVERT(DATETIME, '30/06/'+@annee_fin, 103)
    Ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    declare @annee int
    declare @date_debut datetime
    declare @date_fin datetime
     
     
    SET        @annee=2008
    set @date_debut=CONVERT(DATETIME, '01/07/'+cast(@annee as varchar(4)), 103)
    set @date_fin=CONVERT(DATETIME, '01/07/'+cast(@annee+1 as varchar(4)), 103)
     
    SELECT    idProjet, noDossier, nomProjet, idClient, idEmploye, idCategorie, idType, dateDebut, dateFin, montant
    FROM    tProjet
    WHERE    dateDebut BETWEEN @date_debut AND @date_fin
    Dans ta requete tu avais oublié de concaténer les chaines.
    De plus tu essayais de faire une addition sur des varchars ce qui devait faire de la concaténation. C'est pour cela que j'ai déclaré @annee en tant que int. dans ce cas on peut faire @annee+1 et obtenir un chiffre.
    On peut aussi l'écrire sans variable intermédiaire mais c'est moins lisible
    A+
    Soazig

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour votre réponse, tout marche parfaitement.
    Le code est vraiment simple et compréhensible, il fallait juste avoir de bonnes connaissances en SQL.

    Encore merci,
    Bonne journée.

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

Discussions similaires

  1. probleme de demarrage sql server!!!
    Par djig dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/05/2006, 15h21
  2. Probleme de connexion SQL Server
    Par RA dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/12/2005, 16h08
  3. Convertion des dates SQL Server
    Par sdelaunay dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/08/2005, 10h22
  4. [C#] Problème de connexion sql server 2000
    Par rabbiwan dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/12/2004, 17h21
  5. problemes de dates SQL PARADOX
    Par igs dans le forum Paradox
    Réponses: 5
    Dernier message: 05/07/2004, 19h35

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