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 :

[SQLSERVER] Soustraire un délai à une date en tenant compte des weekends


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 19
    Points : 11
    Points
    11
    Par défaut [SQLSERVER] Soustraire un délai à une date en tenant compte des weekends
    Bonjour,

    Comme c'est écrit dans le titre, j'ai un délai en jours et une date et je dois soustraire les deux en tenant compte des weekends. Je ne vois pas comment je peux faire.

    Exemple :
    Si j'ai un délai de 5 et une date au 13/02/2007
    je dois obtenir le 06/02/2007 et non pas le 08/02/2007.

    Avez-vous une idée ?

    Bye Bye
    Felia

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    Il faut faire une boucle :

    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
     
    DECLARE @date1 
    SET @date1 = '13/02/2007'
    DECLARE @delai int
    SET @delai = 5
     
    WHILE @delai <> 0
    BEGIN
    IF (DATEPART(dw,@date1) <> 1 AND DATEPART(dw,@date1) <> 7)
    SET @date1 = DATEADD(day,-1,@date1)
     
    SET @delai = @delai - 1
    END
     
    PRINT CAST(@date1 as varchar(25))
    le DATEDART(dw) te donne le jour de la semaine, si c'est 1 c'est un dimanche et si c'est 7 c'est samedi, donc si on tombe pas sur un de ces deux jours, on retranche un jour à la date

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Merci pour la réponse mais j'ai oublié de dire que le but était de créer une vue.
    Donc le but va être de solutionner le problème en une seule expression. Et là, je bloque ....

    Crois-tu que ce soit possible ?

    Felia

  4. #4
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    avec une seule requete tu peux pas

    Crée une table rempli cette table avec mon code et crée ta vue en requetant sur cette table.

  5. #5
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Tu peux aussi créer les tables "qui vont bien" pour gérer les jours. Tu as l'air de ne vouloir enlever que les week-ends... est-ce volontaire de compter les jours fériés ?

    SQLPro a écrit un fort bon article qui me sert de référence sur le sujet : http://sqlpro.developpez.com/cours/gestiontemps/

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Pour les jours fériés, c'est surtout que je ne voulais pas me prendre la tête là-dessus et plutôt faire un système complètement autonome et systématique.

    Je vais essayer la méthode de HULK.
    Merci.
    A+

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Je viens de mettre en application la méthode de Hulk. J'ai créé la fonction suivante que j'appelle dans ma requête et ça fonctionne très bien.
    Merci beaucoup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE FUNCTION test(@date1 datetime, @delai int)
    RETURN datetime
    BEGIN
     
    WHILE @delai <> 0
    BEGIN
    IF (DATEPART(dw,@date1) <> 1 AND DATEPART(dw,@date1) <> 7)
    SET @date1 = DATEADD(day,-1,@date1)
     
    SET @delai = @delai - 1
    END
     
    RETURN @date1
    END
    A+

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/11/2013, 12h18
  2. [AC-2003] Calcul d'une nouvelle date en tenant compte des jours ferie
    Par Phil37 dans le forum VBA Access
    Réponses: 6
    Dernier message: 19/09/2013, 08h11
  3. Déplacement Date en tenant compte des FDS
    Par Beaudelicius dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/08/2012, 15h13
  4. [VBA-E] soustraire un jour à une date en VBA
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/01/2007, 21h42
  5. Comment soustraire un an à une date
    Par Jense dans le forum Oracle
    Réponses: 12
    Dernier message: 30/06/2006, 15h03

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