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

Requêtes et SQL. Discussion :

Convertir un nombre de jour en jour, mois année


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Convertir un nombre de jour en jour, mois année
    Bonjour, pour un projet je doit convertir un nombre de jour que j'obtiens avec cette commande:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom, PRENOM, round(DATEDEP-DATEREC) from serveur where DATEDEP is not null union select nom, PRENOM, round(sysdate-DATEREC) from serveur where DATEDEP is null;

    en jour/ moi/ année je pense qu'il faut utiliser des modulos mais je ne vois pas comment le rédiger

    Merci par avance pour votre aide !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Paradoxalement cela n'a rien de simple car les mois et les années n'ont pas le même nombre de jours.

    As-tu besoin d'un calcul parfaitement exact ou une bonne approximation est suffisante ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Un approximation devrait être suffisante

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    J'avais oublié de préciser, ce qui rendra la requête beaucoup plus simple, on doit considérer un mois à 30 jours on ne considère pas les années bissextile et les mois a 31 et 28/29 jours

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    À OK alors oui c'est plus simple :

    Voici une idée de solution, pas la plus éléguante mais assez directe :

    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
    public function CalculerAMJ(prmNbJour as long) as string
        dim result as string
        dim nbAnnee as long
        dim nbMois as long
        dim nbJour as long
        dim nbJourRestant as long
     
        nbJourRestant=prmNbJour
        nbAnnee=int(nbJourRestant/(30 * 12))
        nbJourRestant=nbJourRestant - ((30 * 12) * nbAnnee)
        nbMois=int(nbJourRestant/30)
        nbJourRestant=nbJourRestant - (30 * nbMois)
        nbJour=nbJourRestant
     
        result=nbAnnee & " an(s) " & nbMois & " mois " & nbJour & " jour(s)"
        CalculerAMJ = result
    end function
    Après tu utilises la fonction comme une autre dans ta requête.

    Un truc du genre :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select nom, PRENOM, round(DATEDEP-DATEREC), CalculerAMJ(round(DATEDEP-DATEREC)) as AMJ  from serveur where DATEDEP is not null 
    union select nom, PRENOM, round(sysdate-DATEREC), CalculerAMJ(round(sysdate-DATEREC)) from serveur where DATEDEP is null;

    Aussi pour les requêtes Union, je te suggères de procéder ainsi :

    req1 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom, PRENOM, round(DATEDEP-DATEREC), CalculerAMJ(round(DATEDEP-DATEREC)) as AMJ  from serveur where DATEDEP is not null
    req2 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom, PRENOM, round(sysdate-DATEREC), CalculerAMJ(round(sysdate-DATEREC)) from serveur where DATEDEP is null
    reqUnion :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select req1.* from req1
    union all select req2.* from req2

    Je trouve cela est plus facile à mettre au point et à lire quand la requête devient complexe.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ta réponse !

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Y'aurais un moyen sans utiliser de fonction car on n'en fait pas encore en cours donc ça risque de se voir que ça ne viens pas de moi ^^

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Tu peux réécrire le calcul dans un champ calculé d'une requête, ça va faire une méga-super formule.
    Je te conseille de faire 3 champs calculés en cascade, un champ pour l'année, le mois et le jour ça devrait rendre la chose plus digeste.
    Les calculs sont semblables à ceux du VBA.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [XL-2019] convertir un anniversaire en Jour/Mois/Année
    Par plasto590807 dans le forum Excel
    Réponses: 4
    Dernier message: 24/06/2020, 15h31
  2. Convertir nombre de jours en année, mois et jours
    Par mehdiyou dans le forum VB.NET
    Réponses: 10
    Dernier message: 10/04/2014, 10h08
  3. [AC-2010] Convertir un nombre de jours en mois
    Par salam2012 dans le forum Access
    Réponses: 2
    Dernier message: 18/12/2012, 19h45
  4. Réponses: 7
    Dernier message: 18/06/2007, 16h40
  5. Comment convertir un nombre de jours décimal en date
    Par Soutou dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/11/2005, 00h57

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