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

MS SQL Server Discussion :

Vérification de date [SQL SERVER 2K]


Sujet :

MS SQL Server

  1. #1
    Membre actif Avatar de gwadakillah
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 235
    Points : 239
    Points
    239
    Par défaut Vérification de date [SQL SERVER 2K]
    Dans ma base de données, j'ai sous forme DateTime deux champs, un pour mon début d'activité et un pour ma fin d'activité.

    J'aimerais faire une procédure stockées qui me vérifie si lors de ma saisie suivante dans mon application si je n'ai pas deja inscrit dans la date sélectionnée une activité...

    pour cela,j'utilise une procédure stockée qui me compte le nombre de lignes ou il y a deja une activité dans la période sélectionnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CREATE PROCEDURE [ps_verif_Activite] 
     
    @DateDebut datetime,
    @DateFin datetime,
    @RefCollaborateur int
    AS 
    BEGIN 
     
    SET @DateDebut = DATEADD(mi,1,@DateDebut)
    SET @DateFin = DATEADD(mi,-1,@DateFin)
     
    SELECT COUNT(DateDebut)  FROM Activite
          WHERE DateDebut BETWEEN @DateDebut AND @DateFin
            OR    DateFin BETWEEN @DateDebut AND @DateFin 
        AND RefCollaborateur = @RefCollaborateur
    END
    GO
    Je suis en train de tester mon application et je me rends compte que lorsque j'ai une activité qui est sur plusieurs jours, si je veux insérer une activité le dernier jour de mon activité dans une tranche qui est deja prise, il me retourne aucune ligne donc il considère qu'il n'existe pas d'activité dans cette tranche alors qu'il en existe...
    Comment pourrais je optimiser ce code ?

  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
    21 917
    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 : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Vous devez toujours considérer les intervalles de temps comme :
    soit ouvert à gauche et fermé à droite => ]date debut, date fin]
    soit ouvert à droite et fermé à gauche => [date debut, date fin[

    A partir de la les requêtes sont facile à écrire :

    Insérer une ligne si plage dispo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE PROCEDURE P_INSERT8ACTIVITE @DateDebut datetime,
                                       @DateFin datetime,
                                       @RefCollaborateur int,
     
    AS 
    BEGIN 
     
    INSERT INTO Activite (DateDebut, DateFin, RefCollaborateur)
    SELECT @DateDebut, @DateFin, @RefCollaborateur
    WHERE  NOT EXISTS (SELECT *
                       FROM   Activite
                       WHERE ((@DateDebut > DateDebut AND @DateDebut <= @DateFin)
                              OR  (@DateFin > DateDebut AND @DateFin <= @DateFin))
                        AND RefCollaborateur = @RefCollaborateur
    END
    GO
    A +

  3. #3
    Membre actif Avatar de gwadakillah
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 235
    Points : 239
    Points
    239
    Par défaut
    c'est pas très clair pour moi ...

    Ma requête doit vérifier que la période que je viens de sélectionner (DateDebut-DateFin) n'empiète pas sur une activité dont la période est deja en base...

    et j'aimerais aussi une requete qui me permette de récupérer toutes les activités qui existent dans une période comprise entre DateDébut et DateFin quelque soit leur période...

    J'ai du mal avec les dates...

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour je suis confronté au mm pbl de plage d'horaire....pouvez vs svp explicité + clairement la requete car javoue que j'ai du mal a le comprendre !!!!


    merci

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    ps: votre requete ne comporte til pas une erreur ??? @date_fin>@date_fin ????????

Discussions similaires

  1. [Date] SQL Server 2005
    Par Ykaar dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 18/07/2007, 15h41
  2. Date sql server
    Par rosros dans le forum JDBC
    Réponses: 6
    Dernier message: 13/09/2006, 16h55
  3. date sql server
    Par rosros dans le forum JDBC
    Réponses: 1
    Dernier message: 04/09/2006, 13h53
  4. java et type Date sql server
    Par fadex dans le forum JDBC
    Réponses: 1
    Dernier message: 07/05/2006, 16h54
  5. Convertion des dates SQL Server
    Par sdelaunay dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/08/2005, 09h22

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