Jours et mois en français

La norme SQL évolue : tirez le meilleur d'un SGBD qui la respecte en écrivant du SQL moderne avec en complément PL/pgSQL, php, java etc.
Répondre
Phil
Administrateur du site
Messages : 291
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Jours et mois en français

Message par Phil »

Merci à Guillaume pour sa question :

Quand je fais :
select to_char(to_date('11-07-2017','DD-MM-YYYY'),'Day');
Il me renvoie : Tuesday.
Je préfèrerais qu’il me renvoie Mardi.


Réponse :
Avec Oracle, après modification des paramètres nls de la session, tu obtiens automatiquement "Mardi" avec cette requête.
Avec PostgreSQL, cette requête renverra toujours "Tuesday".
Il est cependant tout à fait possible d'obtenir les jours et mois en français en demandant explicitement la localisation.
La localisation est réalisée en fonction du paramètre lc_time.
La valeur par défaut de lc_time dépend de l'environnement serveur. Il est impossible de positionner lc_time à une valeur qui n'est pas dans la liste des locales du serveur (cf locale -a pour avoir cette liste).
Sur ton serveur, la locale de l'environnement exécutant PostgreSQL est fr_FR.UTF-8 et lc_time est positionné par défaut.
En utilisant tmDay (tm pour translation mode) au lieu de Day lors de l'appel à la fonction to_char, tu obtiendras donc la localisation souhaitée.

Code : Tout sélectionner

select version();
                                                 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
(1 ligne)

show lc_time;
   lc_time
-------------
fr_FR.UTF-8

select to_char(to_date('13-07-2017','DD-MM-YYYY'),'tmDay');
to_char
---------
Jeudi

select to_char(to_date('13-07-2017','DD-MM-YYYY'),'tmday');
to_char
---------
jeudi

select to_char(to_date('13-07-2017','DD-MM-YYYY'),'tmmonth');
to_char
---------
juillet

Cdlt. Phil - pgphil.ovh
Répondre