Vous n'êtes pas identifié(e).

#1 21/12/2016 10:41:18

Mlan2
Membre

Erreur Opération sur date

Bonjour,


Je bute sur un problème simple se résumant à une opération d'addition d'un nombre de jour sur une date.

Ci-dessous, un extrait du code afin d'illustrer le problème rencontré.

Nbr_Jour         INTEGER;                -- Variable de nombre de jours.
Date_Def         TIMESTAMP;              -- Date debut par defaut.

Nbr_Jour := TO_NUMBER (TO_CHAR (NOW(), 'ID'), '99') - 1;

-- Resultat aujourd'hui 21/12/2016 : 2.

Date_Def := Now ();

--Date_Def := Date_Def - integer '1';
--Date_Def := Date_Def - integer TO_CHAR (Nbr_Jour, '99');

Date_Def := Date_Def - Nbr_Jour;

Ci-dessous, le message d'erreur obtenu

En commentaire, dans l'exemple du code, les essais déjà réalisés, générant le même code erreur.


Erreur PostgreSQL : 42883 Message : l'opérateur n'existe pas : timestamp without time zone - integer

Comment, simplement, résoudre ce problème simple (de  base) ?

D'avance merci de votre retour.

Hors ligne

#2 21/12/2016 10:46:23

gleu
Administrateur

Re : Erreur Opération sur date

On ne soustrait pas un entier à une date. Comment PostgreSQL Peut-il savoir à quoi correspond ce nombre ? est-ce un nombre de jours, de mois, d'années ?

Par contre, on peut soustraire un intervalle à une date : now() - interval '1 day' par exemple.

Ce qui donnerait pour votre code :

Date_Def := now() - (Nbr_Jour||' days')::interval

Guillaume.

Hors ligne

#3 22/12/2016 19:21:45

Mlan2
Membre

Re : Erreur Opération sur date

Merci de la réponse

Hors ligne

Pied de page des forums