Salut à tous,
Quelle type de champs dois je utiliser si je veux stocker l'intervalle (en hh:mm:ss) entre deux date.
Merci
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 .....
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.
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 .....
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
vous enregistrez dedans la différence entre vos deux timestamps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE MATABLE ADD INTERVALLE DOUBLE PRECISION;
ex :
ensuite pour le décodage :
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 ...;
Bonne continuation.
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;
Super Barbibulle.
En effet, j'utilise déjà l'UDF rfunc.
Je vais mettre tous ça en pratique
Merci
On progresse .....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager