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

InterBase Discussion :

[Interbase 6]Stocker l'intervalle de temps


Sujet :

InterBase

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut [Interbase 6]Stocker l'intervalle de temps
    Salut à tous,

    Quelle type de champs dois je utiliser si je veux stocker l'intervalle (en hh:mm:ss) entre deux date.

    Merci
    On progresse .....

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Ca dépend de ce que tu veux faire de cet intervalle, et quel est la valeur max qu'il pourra avoir etc...

    Comme le type intervalle n'existe pas sous interbase il faut se débrouiller autrement :

    Soit : Un Time (si l'intervalle fait moins de 24h) sinon un Timestamp (la valeur que vous enregistrez dedans est la soustraction de vos deux dates que vous reconvertissez en timestamp avec DOUBLETODATE (UDF rfunc))
    Soit : un integer qui contient un nombre de secondes par exemple.
    Soit : vous enregistrez les deux dates qui vous permettent de calculer votre intervalle.
    Soit enfin un DOUBLE PRECISION qui peut recevoir directement la différence entre vos deux dates. (La partie entière correspond au nombre de jours d'écarts et la partie décimale le reste de l'écart inférieur à 24H)

    Voilà à peux pres les différentes techniques qui me viennent à l'esprit pour enregistrer un intervalle.

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Bon, comme j'aurais besoin d'un format hh:mm:ss je vais opter pour un integer vu que l'intervale peut depasser le 24h.
    Puis j'utiliserais un ps pour le decoder au bon format en heure seulement ou en jours plus heure.

    Merci Barbibulle.
    On progresse .....

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Si vous utilisez Rfunc (je crois que vous utilisez déjà quelques fonctions de cet UDF) autant choisir DOUBLE PRECISION.
    et utiliser les fonctions DaysBetween, DoubleToDate et DoubleToTime de rfunc.

    Exemple :

    Dans votre table vous déclarez la colonne INTERVALLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE MATABLE
    ADD INTERVALLE DOUBLE PRECISION;
    vous enregistrez dedans la différence entre vos deux timestamps.
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update MATABLE 
      SET INTERVALLE = cast('NOW' as timestamp) - cast('2004-08-01' as timestamp) 
    where ...;
    ensuite pour le décodage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select INTERVALLE,
      daysbetween(doubletodate(0.0), doubletodate(INTERVALLE)) as JOURS,
      cast(doubletotime(INTERVALLE) as time) as HEURES
    FROM MATABLE;
    Bonne continuation.

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Super Barbibulle.
    En effet, j'utilise déjà l'UDF rfunc.
    Je vais mettre tous ça en pratique

    Merci
    On progresse .....

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

Discussions similaires

  1. Requette access sur intervalle de temps
    Par skyman272 dans le forum Access
    Réponses: 15
    Dernier message: 18/02/2006, 10h45
  2. [9i] Calculer des intervalles de temps
    Par tscoops dans le forum Oracle
    Réponses: 9
    Dernier message: 31/12/2005, 08h38
  3. [debutant] Récupérer un intervalle de temps
    Par xlurp dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 28/10/2004, 15h48
  4. [Timer]Comment mesurer un intervalle de temps ?
    Par Pill_S dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 17h39

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