Retour

DatesEntre() : calculer un écart entre deux dates

Temps de lecture : 2 minutes

Bonjour,

Dans ce tutoriel vous apprendrez à utiliser la fonction DatesEntre() afin de calculer un écart entre deux dates.

Prérequis :

  • Version : SAP BI 4.2
  • Application : SAP Web Intelligence
  • Droit de conception sur Web Intelligence

Contexte :

Vous souhaitez calculer l’écart entre deux dates en jours, semaines, mois, trimestres, semestres ou années sur un document Web Intelligence.

Mise en oeuvre :

Pour l’exemple de mise en oeuvre, j’ai créé une requête basée sur un document Excel très simple dans lequel j’ai une date de début et une date de fin :

Pour calculer l’écart entre ces dates, nous allons utiliser la fonction « DatesEntre() » ou « DatesBetween() » en anglais.

Syntaxe officielle de la fonction :

La difficulté dans l’utilisation de cette fonction réside dans le fait que la documentation fourni par SAP est en anglais et que, lorsqu’on l’utilise dans sa version française, nous n’avons pas les valeurs à indiquer pour l’argument « période » (les exemples fournis sont tous en anglais).

Vous trouverez donc ci-dessous un récapitulatif des différentes valeurs que peut prendre l’argument « période » afin de déterminer avec quel unité vous allez calculer votre écart (en jours, semaines, mois …) :

Vous pouvez désormais créer une nouvelle variable ou une nouvelle formule de calcul pour calculer votre écart en année par exemple de la manière suivante :

Vous pouvez ainsi utiliser les arguments présentés dans le tableau ci-dessus pour calculer l’écart dans l’unité souhaité.
Vous trouverez ci-dessous un exemple d’écarts calculés à partir de mon tableau d’origine :

Nous venons de voir ensemble comment calculer un écart entre deux dates.

Pour aller plus loin dans votre réflexion et faire les bons choix, téléchargez notre guide de migration qui vous aidera à définir votre trajectoire BI.

A l’issue de votre lecture, vous en saurez plus sur la méthode MOVE pour réussir votre migration :

Guide migration SAP BI 4.3

Laisser un commentaire

-
  1. Bonjour,
    Est-il possible de calculer un écart entre deux dates mais en partant du principe qu’une année = 360 jours et non 365, comme le ferait la fonction JOURS360 d’Excel ?
    Par avance, merci pour votre réponse.
    Cordialement,

    1. Bonjour,

      Il n’existe pas de fonction équivalente à la fonction JOURS360 dans Web Intelligence. Néanmoins vous pouvez arriver au même résultat en calculant l’écart en jours (DayPeriod au lieu de YearPeriod) ou en utilisant la fonction JoursEntre() et en divisant le résultat par 360.

      Je vous souhaite une bonne journée.

      Romain CARRETERO

  2. Bonjour,

    Merci pour cette explication.
    Est il possible d’ajouter une notion d’heure dans ce calcul ?

    Merci d’avance d’avoir pris du temps pour me répondre.
    Bien cordialement,

    1. Bonjour,

      La fonction HeureEntre() devrait répondre à votre question. Elle s’utilise comme la fonction DateEntre() mais prend en compte l’heure des dates que vous comparez.
      Utilisez un des opérateurs suivants en fonction de votre besoin. : PériodeHeure, Période Minute, PériodeSeconde ou Période Milliseconde.

      Bonne journée.
      Cordialement,
      Romain CARRETERO

  3. Bonjour,
    J’ai une de mes colonnes qui contient un numéro et ce numéro correspond dans une autre colonne à plusieurs dates.
    Savez vous comment je peux afficher l’ordre de classement de ces dates dans une autre colonne Svp?
    Par exemple : Colonne A contient les numéros de clients et colonne B contient les dates de passage en agence.
    Je souhaiterais pouvoir identifier pour chaque client, son premier passage, second passage, 3 eme passage.

    En vous remerciant par avance

    Bien cordialement

    1. Bonjour M TACHEFINI,

      Afin de répondre à votre besoin je vous invite à suivre les étapes suivantes :

      1/ Dans votre document Webi qui contient les ID clients et les dates, il faut créer une variable pour transformer la dimension date en « indicateur ». Créer donc une variable de type indicateur et au niveau de la formule indiquer simplement le nom de la dimension date.

      2/ Créer un tableau avec 3 colonnes : Colonne 1 = ID client, Colonne 2 = Dimension Date et Colonne 3 = Variable Date (indicateur).
      Masquer la colonne 2 (clic droit sur la colonne > masquer) et créer un saut sur l’ID client (clic droit > Saut > Ajouter un saut)

      3/ Créer un classement sur votre colonne Variable Date pour avoir les n premières/dernières dates par ID client.

      Une bonne journée.

      Romain CARRETERO

  4. Bonjour romain et merci !
    ce que je veux afficher c’est un classement par numéro client sans saut
    ça donnerais ça :

    Numéro client : date passage : classement (nouvelle colonne ):
    123456798 16/07/2020 Premier passage
    789456123 15/06/2020 Premier passage
    789456123 13/07/2020 Deuxième passage
    546654987 07/07/2020 Premier passage

    La nouvelle colonne que je souhaites créer m’indiquerais le classement par passage 🙂

    Bien cordialement

    1. Bonjour,

      Si vous souhaitez utiliser un classement, il faudrait :

      1/ Créer une variable pour le classement : =SommeCumulative(Nombre([Date]) ;([ID_Client]))
      Insérer la variable dans votre tableau pour obtenir le classement(1, 2, 3,…) des dates par client.

      2/ Si vous souhaitez afficher « Premier Passage », « Deuxième Passage », etc… il suffit de modifier votre variable de cette manière :
      =Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier])) = 1 Alors « Premier Passage » Sinon Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier]))= 2 Alors « Deuxième Passage » Sinon Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier])) = 3 Alors « Troisième Passage » Sinon SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier]))

      3/ Si vous souhaitez visualiser uniquement les 3 premiers passages, il suffira simplement de filtrer le tableau sur les valeurs souhaitées.

      J’espère que cette méthode répond davantage à votre demande.

      Bonne journée.

      Romain CARRETERO

  5. Merciiiii ça marche vraiment top romain !

  6. bonjour,
    est ce qu’il est possible de calculer un nombre de jours ouvrés comme dans Excel avec la formule NB.JOURS.OUVRES ?
    J’ai insérer un fichier Excel comportant la liste des jours ouvrés.
    j’ai créé la variable suivante, mais je ne sais pas comment vérifier si un jour férié est compris entre mes dates
    =Si([Date réception de l’acte]=[Date de Fin]; »0″;(DatesEntre([Date réception de l’acte];[Date de Fin];PériodeJour)))
    Pouvez vous m’aider ?
    Merci

    1. Bonjour,

      Web Intelligence ne propose pas de fonction équivalente à la fonction NB.JOURS.OUVRES d’Excel.
      La solution serait de calculer, dans une variable, le nombre de jour non ouvrés sur la période à l’aide de votre fichier Excel (voir ce tuto si besoin https://japprendslabi.fr/sap/sap-bi-zone-de-lancement/creer-une-requete-a-partir-dun-fichier-excel/).
      Il faudra ensuite réaliser la différence entre votre calcul (DatesEntre([Date réception de l’acte];[Date de Fin];PériodeJour)) et le nombre de jours non ouvrés sur la période.

      Bon courage

  7. Bonjour est t’il possible de calculer une durée en heure et décimale. Par exemple, 04h30 équivalent à 4,5.

    1. Bonjour,

      Si votre dimension [Durée] est une chaîne de caractères, vous pouvez réaliser cela en passant par les 3 variables suivantes :
      1/ [NbHeures] = EnNombre(Gauche([Durée];2))
      2/ [NbMinutes] = EnNombre(Droite([Durée];2))
      3/ [Durée en décimale] = [NbHeure] + [NbMinutes]/60

  8. Bonjour
    je voudrais faire ce calcul entre une date variable : « Date avis » et une date fixe « 31/12/2020 »
    j’ai tenté de creer la variable suivant
    =MoisEntre([Date avis]; [20201231])

    J’ai un message d’erreur concernant la date fixe avec un message d’erreur me précisant que l’objet n’existe pas

    =MoisEntre([Date avis]; « 20201231 »)

    J’ai aussi un message d’erreur concernant la date fixe avec un message d’erreur me précisant que l’expression n’existe pas

    D’avance merci

    1. Bonjour,

      Pour réaliser votre calcul, il faut créer la variable suivante pour votre date fixe :

      [DateFixe] = AlaDate(« 31/12/2020″; »dd/MM/yyyy »

      En utilisant la fonction AlaDate’), votre dimension [DateFixe] sera de type Date. Vous pourrez ainsi réaliser le calcul souhaité :

      MoisEntre([Date avis];[DateFixe])

  9. Bonjour, Je souhaiterai calculer un délai de traitement entre deux dates de validation de taches « Saisie » et « validation » mais ça ne fonctionne pas j’ai essayé de créer une variable « date Saisie » et « Date validation », mais lorsque je compte je nombre de jours entre ces deux dates ça ne me renvoie rien.
    Merci d’avance

    1. Bonjour, il faut que vos 2 dimensions soient bien au format de date (FormatDate([]; »dd/MM/yyyy ») afin d’utiliser la fonction DatesEntre([Début];[Fin];PériodeJour). Vérifiez bien le format de vos dates dans votre rapport avant de calculer le délai mais si c’est correctement formaté, il ne devrait pas y avoir de problème.

  10. Bonjour,

    Je voudrais entrer mes données du jour actuelle au jour dernier.
    Du 1/07/2022 au 8/07/2022 mais en commençant par un vendredi de la semaine.
    et il me renvoit les données par semaine.

    Merci d’avance

    1. Bonjour,

      Je n’ai pas bien compris votre demande, pourriez-vous la reformuler ?

      Merci par avance,

  11. Bonjour,
    Je voudrais calculer l’Age d’un enfant( jours -mois – années) à partir d’une date d’observation

    cad
    date de naissance 01/01/2000
    date d’observation (31/08/2022
    en Excel j’utilise cette formule: =DATEDIF(D2;AUJOURDHUI(); »y ») & « a  » & DATEDIF(D2;AUJOURDHUI(); »ym ») & « m  » & DATEDIF(D2;AUJOURDHUI(); »md ») & « j »

    Merci pour votre aide

  12. Bonjour,
    Merci pour votre aide sur ces problèmes. Je souhaite obtenir le taux d’absentéisme ou de présence par semaine (pour la cantine, les transports, travaux, etc.).
    Je ne sais pas j’utilise la bonne méthode pour arriver à mes fins mais je pris toutes les abs (date de début et date de fin) et je souhaite regrouper les semaines (S1 ; S2 ; S3 etc.) pour avoir les « Somme(JoursEntre(Datedébut; Datefin)) ». Plus ou moins …

    Je vous remercie par avance,

    1. Bonjour,
      Difficile de vous aider dans avoir accès à vos données. Dans la logique il vous faudrait une dimension « Semaine » qui va vous permettre de répartir votre calcul « Nb d’heures d’absences/Nb d’heures prévues ». Je ne suis pas certain qu’il faille utiliser la fonction DatesEntre() dans votre cas de figure.

  13. Bonjour,

    Je voudrais calculer le nombre des jours ouvrés entre deux dates hors week-end ? et sans compter les jours féries aussi si c’est possible.

    Je vous remercie par avance.

    Cordialement,

    1. Bonjour,

      Web Intelligence ne propose d’équivalent à la fonction NB.JOURS.OUVRES d’Excel.
      Il faut réaliser le calcul en deux temps :
      1/ Calculer le nombre de jours entre vos dates
      2/ Y soustraire le nombre de jour non ouvrés sur la période (utiliser un fichier calendrier type Excel par exemple pour cela)

  14. Bonjour Romain,

    Je vous remercie pour votre réponse.
    En faite, j’ai utilisé la formule ci-dessous pour calculer le délais entre deux dates en jours dans l’outil de conception de l’univers :
    DATEDIFF (day, Date1, Date2)

    Mais pour soustraire le nombre des jours juste des weekends, je n’ai pas su comment faire ?

    Je vous remercie encore une fois.
    Excellente journée.

  15. Bonjour,
    Est ce possible de récupérer la date du premier jour du trimestre en cours ? Si oui, comment procéder ?