PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 26/02/2011 14:06:58

big chris
Membre

pg_catalog et ses fonctions

salut,
j'essaie présentement de bosser sur openelec dans sa V3 mais dans certains liens j'ai un message de ce genre:

du SGBD ERREUR: la fonction pg_catalog.substring(date, integer, integer) n'existe pas LINE 1: ...lisateur,mandant,(a.nom||' - '||a.prenom||' - '||(substring(... ^ HINT: Aucune fonction ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type.
Erreur
DB.pear DB Error: unknown error

que  faire..
?????????

Hors ligne

#2 26/02/2011 21:28:16

Marc Cousin
Membre

Re : pg_catalog et ses fonctions

Aucune idée de ce que peut bien être openelec. Mais substring s'applique à une chaine de caractère, pas à une date. D'ailleurs, si les développeurs veulent extraire une partie d'une date (le jour, le mois ou l'année par exemple), utiliser substring est vraiment maladroit… il y a des fonctions d'extraction sur les dates, qui sont faites pour ça.

Le message d'erreur dit : la fonction pg_catalog.substring(date, integer, integer)

C'est normal.

marc=> \df substring
                                      Liste des fonctions
   Schéma   |    Nom    | Type de données du résultat | Type de données des paramètres |  Type 
------------+-----------+-----------------------------+--------------------------------+--------
pg_catalog | substring | bit                         | bit, integer                   | normal
pg_catalog | substring | bit                         | bit, integer, integer          | normal
pg_catalog | substring | bytea                       | bytea, integer                 | normal
pg_catalog | substring | bytea                       | bytea, integer, integer        | normal
pg_catalog | substring | text                        | text, integer                  | normal
pg_catalog | substring | text                        | text, integer, integer         | normal
pg_catalog | substring | text                        | text, text                     | normal
pg_catalog | substring | text                        | text, text, text               | normal

Aucune ne correspond au prototype demandée.

Ça ressemble à une application développée avec postgresql 8.2 ou inférieure, et qui ne fonctionne plus avec des versions 8.3 ou supérieures, parce que des conversions automatiques ont été supprimées (par exemple de date vers texte).


Marc.

Hors ligne

#3 28/02/2011 10:40:20

big chris
Membre

Re : pg_catalog et ses fonctions

bien compris,
mais par rapport a ce problème, que me conseilles-tu???

Hors ligne

#4 28/02/2011 12:10:45

Marc Cousin
Membre

Re : pg_catalog et ses fonctions

Convertir explicitement la date en chaine de caractère (avec la fonction to_char : http://docs.postgresql.fr/9.0/functions-formatting.html ).
C'est la seule façon d'être sûr que la chaîne représentant la date a le bon format. Sinon, ce format dépend du paramétrage de la base (la variable datestyle):

marc=# SHOW datestyle ;
DateStyle
-----------
ISO, DMY
(1 row)

marc=# SELECT '2010/03/01'::date;
    date   
------------
2010-03-01
(1 row)

marc=# SET datestyle TO 'POSTGRES,DMY';
SET
marc=# SELECT '2010/03/01'::date;
    date   
------------
01-03-2010
(1 row)


Marc.

Hors ligne

#5 28/02/2011 14:12:10

big chris
Membre

Re : pg_catalog et ses fonctions

merci marc, je te tiens au courant...

Hors ligne

#6 28/02/2011 14:33:54

big chris
Membre

Re : pg_catalog et ses fonctions

au fait cette conversion devra se faire dans mes requettes?

Hors ligne

#7 28/02/2011 14:50:29

Marc Cousin
Membre

Re : pg_catalog et ses fonctions

Oui.


Marc.

Hors ligne

#8 01/03/2011 09:42:02

big chris
Membre

Re : pg_catalog et ses fonctions

g viens de trouver la solution à ce prob.

j'ai utilisé la fonction pg_catalog.to_char(date,text) dans toutes mes requètes et tout marche.

Hors ligne

#9 01/03/2011 09:55:56

Marc Cousin
Membre

Re : pg_catalog et ses fonctions

Ok. Pour information, le substring sert à faire quoi ? Parce que si c'est pour sortir un jour, un mois ou une année, il y a des méthodes plus simples et plus performantes que de faire des substring…


Marc.

Hors ligne

Pied de page des forums