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

#1 06/11/2010 00:08:13

tomlaurent
Membre

format date sortie

Bonjour,

J'ai un problème sur un type date d'une de mes colonnes. En effet je voudrais avoir comme type de date le format européen: dd/mm/yyyy

Or pour cela j'ai lu qu'il fallait lancer comme requête:

ALTER DATABASE "mabase" SET datestyle=sql, dmy;

Or cela ne me permet que de pouvoir ajouter des données sous la forme dd/mm/yyyy mais dans l'affichage, j'ai uniquement yyyy-mm-dd, ce qui est le type date par défaut dans postgres.

Je précise que je débute avec postgres, j'ai la version 9.

pour le datestyle, le format est bien pris en compte dans la base de données. J'ai également essayer de mettre European, ce qui ne change rien.

Si quelqu'un a une idée de comment s'y prendre.

Par avance, merci

Hors ligne

#2 06/11/2010 00:43:04

gleu
Administrateur

Re : format date sortie

La fonction to_char devrait vous permettre de le faire.


Guillaume.

Hors ligne

#3 06/11/2010 00:47:49

NOURI
Membre

Re : format date sortie

Guillaume tu est plus rapide tongue

salut à tous au passage.


Cordiales Salutations

Hors ligne

#4 06/11/2010 12:55:24

tomlaurent
Membre

Re : format date sortie

Alors j'ai essayé d'utiliser la fonction to_char, mais j'ai quelques petits problèmes:

1- le résultat que j'obtiens est de type char et non de type date;

2- si je veux changer mes données de ma colonne de type date dont le format ne me plaît pas et est sous la forme yyyy-mm-dd, j'ai essayé de créer une autre colonne de type char pour lui injecter les données de type date en utilisant la fonction to_char, mais cela ne fonctionne pas;

3- J'aurai également voulu savoir si quelqu'un connaît un site internet pour apprendre les bases du SQL et de postgres avec des exemples.

Merci encore

Hors ligne

#5 06/11/2010 21:05:22

Marc Cousin
Membre

Re : format date sortie

Bonjour :

1: c'est normal, puisque to_char génère une chaine de caractère à partir d'une date. Si vous voulez l'inverse (une date à partir d'une chaine, c'est to_date)

2: vous confondez date et format de date: dans une colonne date, vous stockez une date, pas sa représentation textuelle. C'est à vous de lui demander explicitement un format d'affichage (donc une conversion en chaine de caractère, ce qu'on vous affiche, c'est une chaine).

3: Recherchez des choses avec comme mot clé 'tutorial SQL', il y en a un certain nombre.


Marc.

Hors ligne

#6 08/11/2010 13:08:30

tomlaurent
Membre

Re : format date sortie

Bonjour

Donc j'ai regardé plusieurs tutorial sur le language sql.

Si je comprends bien, je ne peux pas avoir comme affichage dans ma clonne de type "date" dd/mm/yyyy

Par contre je peux avoir dans ma colonne de type char dd/mm/yyyy.

J'ai également essayé de créer un nouveau type avec la fonction to_char pour mettre la date au format dd/mm/yyyy mais je n'ai pas réussi. J'ai l'impression que "date" n'est pas reconnu comme donnée. Sur plusieurs site, il y a comme exemple to_char(2001-12-03, 'dd/mm/yyyy') où il y a vraiement une donnée concrète. Mais ne peut-on pas le généraliser ?

Voici le code que j'ai voulu faire pour créer mon type:

CREATE TYPE "non_type"(
to_char(date, 'dd/mm/yyyy')
);

Sinon pour créer un type au format dd/mm/yyyy, j'ai également essayé de faire:

CREATE TYPE "nom_type" (
dd integer,
/,
mm integer,
/,
yyyy integer);

Mais les "/" bloquent la création. Si quelqu'un à la moindre idée...

Autre piste pour essayer d'afficher le format date en dd/mm/yyyy, j'ai essayé de regarder les fichiers de configuration pour voir si l'affichage par défaut était en iso, mais je n'ai rien trouvé. Savez-vous si c'est possible en modifiant certains fichiers ou pas?

Merci encore

tomlaurent

Hors ligne

#7 08/11/2010 14:11:57

gleu
Administrateur

Re : format date sortie

Avant de chercher une solution, pouvez-vous nous expliquer votre problème ? pourquoi voulez-vous que la date d'une donnée affichée par PostgreSQL soit affichée dans le format DD/MM/YYY ? c'est normalement quelque chose que fait une application cliente, pas PostgreSQL.


Guillaume.

Hors ligne

#8 08/11/2010 15:18:05

tomlaurent
Membre

Re : format date sortie

Disons que j'essaie juste de me familiariser avec postgres et c'est simplement une curiosité que j'avais. J'essaie de comprendre les différentes possibilités sur les différents types et leur format.

Dans la documentation de postgres j'ai lu que l'on pouvait modifier l'affichage des dates avec datestyle, mais quand j'ai fait la modification cela n'a pas foctionné. Donc je me suis demandé s'il y avait une autre possibilité.

Hors ligne

#9 08/11/2010 15:31:39

Marc Cousin
Membre

Re : format date sortie

to_char(2001-12-03, 'dd/mm/yyyy') ne peut pas marcher.
to_char('2001-12-03', 'dd/mm/yyyy') pourrait. Malgré tout, c'est assez inintéressant de le faire: '2001-12-03' est une chaîne de caractère, pas une date.
Écrire to_char('2001-12-03', 'dd/mm/yyyy'), c'est espérer que le moteur reconnaisse '2001-12-03' comme une date, ce qui n'est évidemment pas parfaitement garanti. Ici, ça marchera, parce que vous avez fourni la date au format ISO.

Une façon explicite de le faire serait d'écrire :

to_char(to_date('2001-12-03','yyyy-mm-dd'),'dd/mm/yyyy')

Là, tous les types des paramètres des fonctions sont bons: on passe à to_date une chaîne de caractères, et à to_char une date?


Marc.

Hors ligne

Pied de page des forums