Vous n'êtes pas identifié(e).
Pages : 1
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
La fonction to_char devrait vous permettre de le faire.
Guillaume.
Hors ligne
Guillaume tu est plus rapide
salut à tous au passage.
Cordiales Salutations
Hors ligne
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
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
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
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
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
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
Pages : 1