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

 Oracle Discussion :

Nombre de Jours par rapport à une date de référence


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut Nombre de Jours par rapport à une date de référence
    Bjr à tous
    Débutant , j'ai crée une table , avec une colonne ''Date de Rédaction'' sous la forme YYYYMMDD
    exemple:''Date de Redaction
    20071102
    20080405
    20100223
    20110225
    20110228
    20120624
    20130412
    etc..........
    je voudrai ajouter une colonne ''Nbre de Jrs'' qui me donne le nombre de jours par rapport à la date d'aujourd'hui
    Merci pour votre aide

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par JFXN200955 Voir le message
    je voudrai ajouter une colonne ''Nbre de Jrs'' qui me donne le nombre de jours par rapport à la date d'aujourd'hui
    Et donc vous avez conscience que cette colonne devra être recalculée tous les jours ?
    Il ne faut pas stocker ce genre de calcul, faîtes une vue si besoin.

    Pour le calcul, la différence entre 2 dates est un nombre de jour.
    TRUNC vous permet de supprimer la composante horaire pour avoir un compte rond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> select trunc(sysdate) - trunc(to_date('20130412','yyyymmdd')) as nb_jour from dual;
     
       NB_JOUR
    ----------
           256
     
    SQL>

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    De plus, il existe en SQL un type DATE pour stocker des ... dates qui a l'avantage d'être beaucoup plus performant à l'usage qu'une chaine qu'on devra convertir dès qu'un calcul est nécessaire.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut nbre de jours par référence à une date
    J'ai compris la commande sur une date mais sur mes milliers de 'date de redaction' ?
    Faut-il que je crée une vue?
    Merci pour vos conseils

    Un débutant agé

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Pour le calcul, la différence entre 2 dates est un nombre de jour.
    TRUNC vous permet de supprimer la composante horaire pour avoir un compte rond :
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select trunc(sysdate) - trunc(date_redaction) as nb_jour from latable

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut Intervalle entre 2 dates
    Bonjour
    J'ai ajouté à 'ma table ' une colonne nbredejours.

    j'ai testé la syntaxe suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select trunc('20140121')-trunc(to_date('dtredac','YYYYMMDD')) as nbredejours from iqspi1uprso;

    SQL> select trunc('20140121')-trunc(to_date('dtredac','YYYYMMDD')) as nbredejours from iqspi1uprso;
    select trunc('20140121')-trunc(to_date('dtredac','YYYYMMDD')) as nbredejours from iqspi1uprso
    *
    ERREUR à la ligne 1 :
    ORA-00932: types de données incohérents : NUMBER attendu ; DATE obtenu
    j'ai testé

    SQL> select trunc(20140121)-trunc(dtredac) as nbredejours from iqspi1uprso;
    ...suite...
    NBREDEJOURS
    -----------
    39295
    39294
    39213
    39207
    39193
    39191
    39117
    39110
    38904
    38900
    30014
    29818
    29796
    29618
    29602
    29415
    29396
    29200
    29004
    ...suite...
    que représentent ces nombres ?


    Cordialement

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    '20140121' n'est pas une date, c'est une chaine de caractères.
    La fonction TRUNC() attend une date ou un nombre. En conséquence, TRUNC('20140121') convertit '20140121' en nombre et retourne le nombre 20140121.
    Il faudrait donc calculer TRUNC(to_date('20140121', 'yyyymmdd')) - TRUNC(dtredac) pour avoir une différence en nombre de jours... à la condition que la colonne dtredAc soit bien de type DATE.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut nombre de jours entre 2 dates
    Je reformule ma demande
    J'ai une table avec une colonne 'date de redaction'(quelques milliers de dates) sous la forme YYYYMMDD
    Je voudrai en l'interrogeant obtenir le nombre de jours entre 'date de redaction' et date d'aujourdh'ui ou n'importe quelle date de référence pour les milliers de lignes de ma table
    dois-je auparavant rajouter une colonne 'nombre de jours' et créer une invite pour la date de référence?
    Je ne sais pas comment écrire ma requête pour faire ce calcul
    ensuite comment interroger ma table pour obtenir le résultat
    Débutant je vous remercie pour votre aide et vos conseils

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2007, 16h06
  2. [Conception] Additionner le nombre de jours pour donner une date
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 09h03
  3. Réponses: 7
    Dernier message: 31/07/2006, 13h50
  4. Réponses: 7
    Dernier message: 05/04/2006, 11h22
  5. [MySQL] Select count par rapport à une date
    Par ruty dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 02/04/2006, 22h17

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