Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/08/2004, 17h07   #1
Membre émérite
 
Avatar de Andry
 
Inscription : juillet 2002
Messages : 1 109
Détails du profil
Informations personnelles :
Localisation : Madagascar

Informations forums :
Inscription : juillet 2002
Messages : 1 109
Points : 949
Points : 949
Envoyer un message via MSN à Andry
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 .....
Andry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2004, 17h36   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2004, 17h42   #3
Membre émérite
 
Avatar de Andry
 
Inscription : juillet 2002
Messages : 1 109
Détails du profil
Informations personnelles :
Localisation : Madagascar

Informations forums :
Inscription : juillet 2002
Messages : 1 109
Points : 949
Points : 949
Envoyer un message via MSN à Andry
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 .....
Andry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2004, 18h13   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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 :
1
2
ALTER TABLE MATABLE
ADD INTERVALLE DOUBLE PRECISION;
vous enregistrez dedans la différence entre vos deux timestamps.
ex :
Code :
1
2
3
UPDATE MATABLE 
  SET INTERVALLE = cast('NOW' AS timestamp) - cast('2004-08-01' AS timestamp) 
WHERE ...;
ensuite pour le décodage :

Code :
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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2004, 07h48   #5
Membre émérite
 
Avatar de Andry
 
Inscription : juillet 2002
Messages : 1 109
Détails du profil
Informations personnelles :
Localisation : Madagascar

Informations forums :
Inscription : juillet 2002
Messages : 1 109
Points : 949
Points : 949
Envoyer un message via MSN à Andry
Super Barbibulle.
En effet, j'utilise déjà l'UDF rfunc.
Je vais mettre tous ça en pratique

Merci
__________________
On progresse .....
Andry est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h51.


 
 
 
 
Partenaires

Hébergement Web