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 :

[Procédure stocké][Fonctions]Déterminer les jours ouvrables


Sujet :

MS SQL Server

  1. #1
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut [Procédure stocké][Fonctions]Déterminer les jours ouvrables
    Bonjour,

    j'ai besoin de connaître les jours ouvrables entre une date de début et une date de fin (exemple entre le 7/11/05 et le 12/11/05, il y a le 7, le 10, le 11 et le 12/11/2005)

    Saviez vous si ce genre de procédures ou de fonctions a été déja abordés ?
    Sinon, je n'ai vraiment pas d'idées sur comment le faire

    Merci de votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Si les jours ouvrables sont sont Lu à ve, c'est assez aisé à faire
    Sinon, il vous faut créer un agenda: à la mode SQLPro, il y a un article

  3. #3
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    bon j'ai commencé par créer une fonction qui prend en paramètre la date et qui te retourne 1 si c'est un jour ouvré, 2 si c'est un samedi ou dimanche (je n'ai pas trouvé comment renvoyer True ou False)

    je vais essayer de trouver mieux :

    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
    18
    19
    20
    21
    CREATE FUNCTION FN_JOURS_OUVRES (@DateSaisie datetime)  
     
    RETURNS INT
     
    AS  
     
    BEGIN
     
    DECLARE @JourDate CHAR(10)
    DECLARE @Retour INT
     
    SELECT @JourDate = DATENAME(weekday, @DateSaisie)
     
    IF @JourDate = 'samedi' or @JourDate='dimanch'
    	SET @Retour = 2
    ELSE
    	SET @retour = 1
     
    Return @Retour
     
    END
    c'est ma première fonction T-SQL et ce graçe au super "petit" papier de SQL Pro

    Je ne sais pas si c'est l'idéale !

  4. #4
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    En fait l'idéale est que j'ai une table de jours ouvrés en fonction d'une date début et d'une date fin !!

    ==> une fonction qui renvois une table de jours ouvrés

    il y a bien un exemple dans les papiers de SQL Pro, mais c'est trés basique, il te permet pas de faire des boucles je pense !

    je vais explorer ça !

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Ceci dit, ca risque de pas être des plus performants. Pour vote cas précis des samedis/dimanches, ne serait-il pas plus trivial d'ajouter à votre requête de calcul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where DATENAME(weekday, VotreChampDate) not in ('Samedi','Dimanche')

  6. #6
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    faute de temps, je n'ai pas choisi une solution SQL !! je crée mes jours ouvrés via code VB et puis je cherche mes jours !

    Le problème est que je dois afficher des informations qui ne sont pas en bases !! je m'explique : j'ai des dates de saisie dans une base, je veux savoir si par exemple pendant les 2 dernières semaines (entre le 3/10 et le 16/10) j'ai une date de saisie par jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Date saisie dans base = 3/10; 4/10; 5/10; 6/10; 10/10; 11/10; 13/10; 14/10
     
    Résultat de ma requête : 7/10 (c'est un jour ouvré mais il n'y a pas de date saisi) et le 12/10 (idem)
    donc par code VB, je crée ma table de jours ouvrées entre le 3/10 et le 15/10 par exemple et puis je fait une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select MaDate from MaTableJourOuvre
    WHERE MaDate not in (Select MaDeuxiemeDate From MaTableSaisi)
    je vais revenir voir ça en sql dés que j'aurais un peu plus de temps

    Merci fadace !

Discussions similaires

  1. [2012] Procédure stockée & fonction
    Par casa51 dans le forum Développement
    Réponses: 2
    Dernier message: 11/05/2015, 13h45
  2. [2005] Problem procédure stockée pour corriger les périodes de validité
    Par bouboumimi dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 02/08/2014, 16h51
  3. Création d'un champ contenant les jours ouvrables.
    Par Ferosite dans le forum VBA Access
    Réponses: 26
    Dernier message: 30/04/2009, 14h36
  4. [Débutant]Comment exécuter une fonction tous les jours
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/06/2006, 16h10
  5. Réponses: 5
    Dernier message: 04/10/2004, 18h20

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