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

SQL Oracle Discussion :

Somme de date en sql/Oracle


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Par défaut Somme de date en sql/Oracle
    Bonjour,
    voici mon pb:
    j'ai 2 colonnes VARCHAR2 contenant :
    00:15:21
    et
    00:42:15
    c'est à dire 2 date mais en VARCHAR2.
    Je veux sommer ces 2 dates mais je ne trouve pas comment faire.
    J'arrive même pas à les transformer en date avec to_date car il me sort que l'heure doit être entre 1 et 12
    Quelqu'un aurait une idée?
    Merci d'avance.

  2. #2
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par zizou771 Voir le message
    Bonjour,
    voici mon pb:
    j'ai 2 colonnes VARCHAR2 contenant :
    00:15:21
    et
    00:42:15
    c'est à dire 2 date mais en VARCHAR2.
    Je veux sommer ces 2 dates mais je ne trouve pas comment faire.
    J'arrive même pas à les transformer en date avec to_date car il me sort que l'heure doit être entre 1 et 12
    Quelqu'un aurait une idée?
    Merci d'avance.
    H24 pour le format de l'heure ca ne mache pas ?

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    sommer des dates ça n'existe pas. il faut transformer tes chars en nombre.

    style substr(:n,1,2)*3600+substr(:n,4,2)*60+substr(:n,7,2)

    ensuite tu reformates ...

    to_char(trunc(:n/3600),'00')||':'||to_char(mod(trunc(:n/60),60),'00')||':'||to_char(mod(:n,60),'00')

    il existe bien un type INTERVAL mais il ne se laisse pas sommer

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    heu... aujourd'hui plus demain c'est sensé donner quel résultat ?

  5. #5
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par orafrance Voir le message
    heu... aujourd'hui plus demain c'est sensé donner quel résultat ?
    Il s'est mal exprimé je pense ... ce sont des objets VARCHAR mais au vu des données ce sont des durées exprimées en heures (heure, minute, seconde).




    Tu noteras le paradoxe à ta question :
    Aujourd'hui + demain = ???
    Demain - Aujourd'hui = une journée

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    sommer des VARCHAR, je ne sais pas faire non plus

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par orafrance Voir le message
    heu... aujourd'hui plus demain c'est sensé donner quel résultat ?
    deux aujourd'hui plus un?

  8. #8
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    deux aujourd'hui plus un?
    Pour info, de logiciels comme Excel sont capables de le faire (si si )
    Aujourd'hui + demain = 19/12/2116

    (apres comprendre ce que ca veut dire, c'est une autre paire de manche)

  9. #9
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est pourtant simple...

    20+19 = 39 donc 9 puisqu'on peut pas excéder 30 en juin. (j'ai 9 et pas 19 moi )

    ensuite 6+6=12

    Enfin 2008+2008=4016... = 2116... euh ouais... là même moi j'ai décroché

  10. #10
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL> select sysdate-date '1899-12-30'+sysdate+1 from dual;
    SYSDATE-DATE'1899-1
    -------------------
    2116-12-10_05:09:28
    aujourd'hui + demain à la même heure, selon Excel



    PS: Excel utilises le nombre de jour depuis le 1er janvier 1900, mais ils se sont un peu planté avec le 29 février 1900. Apparement pour des raisons de compatibilité avec Lotus 123 qui employait les années sur deux chiffres...

    Pour ceux qui aiment Excel : (1-JAN-1900) - 1 = 0-JAN-1900

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Par défaut
    bon j'vais utiliser
    substr(:n,1,2)*3600+substr(:n,4,2)*60+substr(:n,7,2)
    car en fait ces des durée à additionner et non des dates...j'm'etait mal exprimé
    merci

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

Discussions similaires

  1. SQL Oracle : modifier l'année d'une date
    Par stof dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/08/2009, 11h26
  2. Date et paramètre SQL ORACLE
    Par The eye dans le forum VB.NET
    Réponses: 0
    Dernier message: 05/04/2009, 15h50
  3. Réponses: 6
    Dernier message: 10/08/2006, 15h45
  4. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  5. [SQL-Oracle] moyenne de date
    Par fdraven dans le forum Oracle
    Réponses: 4
    Dernier message: 24/11/2005, 07h31

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