banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 06 March 2012 11:15

gwen
Participant actif
Lieu: Guingamp
Date d'inscription: 14 Nov 2005
Messages: 72
Site web

[postgresql 8.4.5]Calcul interval entre plusieurs dates

Bonjour,

je suis à la recherche d'une méthode pour calculer un interval de date.

le probleme est le suivant :

les agents réalisent des diagnotics sur les assainissements à plusieurs dates.
date1, date2, date 3

j'aurais besoin de calculer la date de la prochaine visite dans 4 ans/

j'arrive à  mon résultat de cette manière pour une colonne :

Code:

select 
    (date1::date + '4 years'::interval)::date as date_prochaine_visite
from spanc
order by date ;

Cependant, le probleme se complique car je souhaite connaitre la date de la prochaine visite si la date3 est rempli sinon utiliser la date2 sinon utiliser la date1

j'ai tenté la requete suivante à l'aveuglette   :


Code:

select 
    case     when date3 IS NOT NULL THEN (date3::date + '4 years'::interval) 
        when date2 IS NOT NULL THEN (date2::date + '4 years'::interval) 
        ELSE (date1::date + '4 years'::interval)
    END
from spanc;

syntaxe en entrée invalide pour le type date



Merci d'avance pour votre proposition de méthode

Gwen

Dernière modification par gwen (Tue 06 March 2012 11:16)

Hors ligne

 

#2 Tue 06 March 2012 12:34

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1230
Site web

Re: [postgresql 8.4.5]Calcul interval entre plusieurs dates

Bonjour Gwen,

je viens de tester ta syntaxe sur une version identique de postgresql et je n'ai pas d'erreur.

Tu peux utiliser aussi la fonction COALESCE qui retourne la première valeur non nulle :

Code:

SELECT COALESCE(date_3,date_2,date_1)::date + '4 years'::interval
FROM spanc;

Mathieu

Dernière modification par Mathieu BOSSAERT (Tue 06 March 2012 12:35)


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#3 Tue 06 March 2012 12:35

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: [postgresql 8.4.5]Calcul interval entre plusieurs dates

gwen a écrit:

Bonjour,

je suis à la recherche d'une méthode pour calculer un interval de date.

le probleme est le suivant :

les agents réalisent des diagnotics sur les assainissements à plusieurs dates.
date1, date2, date 3

j'aurais besoin de calculer la date de la prochaine visite dans 4 ans/

j'arrive à  mon résultat de cette manière pour une colonne :

Code:

select 
    (date1::date + '4 years'::interval)::date as date_prochaine_visite
from spanc
order by date ;

Cependant, le probleme se complique car je souhaite connaitre la date de la prochaine visite si la date3 est rempli sinon utiliser la date2 sinon utiliser la date1

j'ai tenté la requete suivante à l'aveuglette   :


Code:

select 
    case     when date3 IS NOT NULL THEN (date3::date + '4 years'::interval) 
        when date2 IS NOT NULL THEN (date2::date + '4 years'::interval) 
        ELSE (date1::date + '4 years'::interval)
    END
from spanc;

syntaxe en entrée invalide pour le type date



Merci d'avance pour votre proposition de méthode

Gwen


Bonjour,

Le principe que vous utilisez semble correct. L'erreur ne vient-elle pas d'un des champs date qui n'aurait pas la bonne forme et ne pourrait pas etre "casté" en date ?
Quel sont les types de ces champs date ?

Que donne simplement un

Code:

select date1::date, date2::date, date3::date, date4::date from spanc

Nicolas

Hors ligne

 

#4 Tue 06 March 2012 14:37

gwen
Participant actif
Lieu: Guingamp
Date d'inscription: 14 Nov 2005
Messages: 72
Site web

Re: [postgresql 8.4.5]Calcul interval entre plusieurs dates

Merci les gars,

En effet, je force le passage avec du character varying !!! je pense qu'il est temps de passer à la conversion de ces champs en date.

je vais procéder aux modifications et  je vous tiens au courant.

Hors ligne

 

Pied de page des forums

Powered by FluxBB