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