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 :

Calcul d'une date de fin : fonction INTERVAL ?


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Calcul d'une date de fin : fonction INTERVAL ?
    Bonjour,

    J'ai une table sous oracle qui a une date de début et une durée en millisecondes.
    Je veux afficher la date de fin et j'ai pensé à la fonction "INTERVAL" malheureusement elle ne semble pas fonctionner si la durée est un champ de table, ca ne marche qui si je mets une constante en chaine de caractère :

    SELECT debut + INTERVAL (duree/1000) SECOND from table
    ne fonctionne pas mais

    SELECT debut + INTERVAL '10' SECOND from table
    qui ajoute une durée constante de 10s fonctionne

    J'ai essayé to_char(duree/1000) qui ne marche pas, ni même to_char(10) donc apparemment derrière INTERVAL on ne peut mettre ni champ ni fonction !

    Est-ce que qqn a une idée ?
    Merci !!

  2. #2
    Invité
    Invité(e)
    Par défaut
    une date est en jour donc ça donne simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ma_date + mes_millisecondes  / (24*60*60*1000 ) from dual ;

  3. #3
    Invité
    Invité(e)
    Par défaut
    Cependant attention !!!
    Une date est précise à la seconde, donc tes millisecondes ne seront pas pris en compte.
    Pour obtenir cette précision, il faut utiliser un type timestamp.

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Réponse OK
    Merci beaucoup, ca fonctionne parfaitement !

    Je connaissais la syntaxe date + x mais je pensais que x devait être un nombre entier, donc un nombre de jour. En utilisant les fractions on peut détailler jusqu'à la seconde.
    Je perds effectivement les milisecondes dans mon affaire mais je n'ai pas besoin d'une telle précision, les secondes me suffisent.


  5. #5
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par vingsxr Voir le message
    Je veux afficher la date de fin et j'ai pensé à la fonction "INTERVAL" malheureusement elle ne semble pas fonctionner
    Normal, INTERVAL n'est pas une fonction

    Utilise la fonction NUMTODSINTERVAL, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select numtodsinterval(1/1000,'SECOND') from dual;
    +00 00:00:00.001000
    INTERVAL c'est un mot clé pour entrer un interval sous la forme d'un litteral, comme dans DATE '2000-01-01'.

Discussions similaires

  1. Réponses: 14
    Dernier message: 09/01/2007, 17h19
  2. [Dates] Calcul sur une date
    Par jpascal dans le forum Langage
    Réponses: 3
    Dernier message: 27/12/2006, 09h41
  3. [Dates] Faire un calcul sur une date?
    Par kevinf dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2006, 20h18
  4. Calcul d'une date de fin
    Par jym62 dans le forum Access
    Réponses: 7
    Dernier message: 30/08/2006, 21h47
  5. Réponses: 1
    Dernier message: 18/08/2006, 11h01

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