[PL/pgSQL] Soustraire un interval à un timest
Résolu
Yoan
Messages postés
11795
Date d'inscription
Statut
Modérateur
Dernière intervention
-
Yoan Messages postés 11795 Date d'inscription Statut Modérateur Dernière intervention -
Yoan Messages postés 11795 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je souhaiterais soustraire un élément de type interval à un timestamp sous PL/pgSQL (avec un résultat de type timestamp).
Ceci fonctionne très bien avec des valeurs fixes, par exemple (selon la doc) :
Mais si je veux opérer sur les nuplets tirés de la base, ça va tout de suite moins bien. Ceci ne marche pas, mais il traduit bien l'idée de ce que je voudrais faire :
Il me signale une erreur de syntaxe près de "date_arrivee". J'ai essayé quotes et parenthèses dans tous les sens, mais pas moyen de lui faire entendre que date_arrivee et temps_de_course sont des noms d'attributs. Sur la doc il n'y a que des exemples avec des valeurs "fixes".
Merci de votre aide.
Je souhaiterais soustraire un élément de type interval à un timestamp sous PL/pgSQL (avec un résultat de type timestamp).
Ceci fonctionne très bien avec des valeurs fixes, par exemple (selon la doc) :
SELECT timestamp '2001-09-28 23:00' - interval '23 hours';
Mais si je veux opérer sur les nuplets tirés de la base, ça va tout de suite moins bien. Ceci ne marche pas, mais il traduit bien l'idée de ce que je voudrais faire :
SELECT timestamp date_arrivee - interval temps_de_course minutes AS date_depart FROM course WHERE id_course=1111;
Il me signale une erreur de syntaxe près de "date_arrivee". J'ai essayé quotes et parenthèses dans tous les sens, mais pas moyen de lui faire entendre que date_arrivee et temps_de_course sont des noms d'attributs. Sur la doc il n'y a que des exemples avec des valeurs "fixes".
Merci de votre aide.
A voir également:
- [PL/pgSQL] Soustraire un interval à un timest
- Winrar 64 ccm pl - Télécharger - Compression & Décompression
- Pl studio - Télécharger - Édition & Montage
- Comment soustraire un pourcentage - Guide
- Ajouter (+15%) et Soustraire (-15%) ✓ - Forum Excel
- Jpg. pl - Forum Perl
1 réponse
Bon j'ai changé le type de durée_course en type INTERVAL(3).
Le problème c'est que la durée des courses est calculée automatiquement par un trigger. Il faut maintenant que je convertisse (dans le trigger) le résultat du calcul de durée_course en INTERVAL.
Toujours le même problème donc. Avec une valeur "fixe" ça fonctionne :
Sinon il est bel et bien d'accord pour faire un timestamp-interval. Encore faut-il que j'obtienne l'interval ....
Merciche :-)
Le problème c'est que la durée des courses est calculée automatiquement par un trigger. Il faut maintenant que je convertisse (dans le trigger) le résultat du calcul de durée_course en INTERVAL.
Toujours le même problème donc. Avec une valeur "fixe" ça fonctionne :
CREATE FUNCTION calcul_durée() RETURNS trigger AS ' BEGIN UPDATE course SET durée= (SELECT INTERVAL ''5 minutes'') WHERE id_course=old.id_course; RETURN new; END 'LANGUAGE 'plpgsql';Mais dès que je lui fais faire le calcul avec les vraies valeurs ça foire :
CREATE FUNCTION calcul_durée() RETURNS trigger AS ' BEGIN UPDATE course SET durée= (SELECT INTERVAL sum(durée_étape) WHERE ... etc) WHERE id_course=old.id_course; RETURN new; END 'LANGUAGE 'plpgsql';
Sinon il est bel et bien d'accord pour faire un timestamp-interval. Encore faut-il que j'obtienne l'interval ....
Merciche :-)
Ceci fonctionne :
Ceci fait que la somme des "durée_étape" [i.e. un entier] est multipliée par un intervalle, et ça psql sait le faire : le résultat est un intervalle.
;-)