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 29/04/2015 11:24:27

gom
Membre

SQL : Convertir numéro du jour dans la semaine en texte

Bonjour


J'ai une colonne avec le numéro du jour dans la semaine et j'aimerais convertir ces numéros en texte.


Exemple :

1 => Lundi
2 => Mardi
etc.
7 => Dimanche


J'essaye de faire comprendre à la fonction to_char() que mon 1er paramètre est un numéro de jour dans la semaine et que je veux le nom du jour correspondant :

select to_char(3, 'ID Day');

J'attends comme résultat : "Mercredi".


J'ai également essayé comme ça mais ça me ramène "Samedi" :

select to_char(to_date('3', 'ID'), 'Day');

Est-ce possible ?



Gôm

Dernière modification par gom (29/04/2015 11:24:59)

Hors ligne

#2 29/04/2015 14:02:49

damalaan
Membre

Re : SQL : Convertir numéro du jour dans la semaine en texte

Bonjour

Il y a tout ce qu'il faut là :
http://docs.postgresql.fr/9.3/functions-formatting.html

select to_char(current_timestamp, 'TMday');

Hors ligne

#3 29/04/2015 14:20:31

gom
Membre

Re : SQL : Convertir numéro du jour dans la semaine en texte

Bonjour


Mouais et comment je fais avec le numéro du jour dans la semaine en paramètre d'entrée ?

Dernière modification par gom (29/04/2015 14:27:06)

Hors ligne

#4 29/04/2015 14:38:57

damalaan
Membre

Re : SQL : Convertir numéro du jour dans la semaine en texte

Tu n'as pas la possibilité de récupérer la date directement ?
Sinon, tu peux soit monter une table avec la correspondance 1=lundi, 2=mardi.... ou utiliser une série de case when

Effectivement en cherchant un peu je n'ai pas trouvé de réponse plus simple (ce qui ne veut pas dire qu'il n'y en a pas!)

Hors ligne

#5 29/04/2015 14:40:54

gom
Membre

Re : SQL : Convertir numéro du jour dans la semaine en texte

Non malheureusement je n'ai pas la date. Juste le numéro du jour dans la semaine où a eu lieu l'intervention.

Le CASE WHEN c'est ce que j'ai fait en attendant, mais, pour ma culture big_smile, je voulais savoir s'il n'y avait pas un moyen plus propre.

Hors ligne

#6 29/04/2015 18:39:52

gleu
Administrateur

Re : SQL : Convertir numéro du jour dans la semaine en texte

En dehors de créer une fonction, non.


Guillaume.

Hors ligne

#7 29/04/2015 18:43:57

gom
Membre

Re : SQL : Convertir numéro du jour dans la semaine en texte

Dommage car en SQL Server je crois que c'est possible.

Hors ligne

#8 29/04/2015 21:22:41

gleu
Administrateur

Re : SQL : Convertir numéro du jour dans la semaine en texte

Oui, enfin, d'un autre côté, c'est pas non plus la mort.

create or replace function dow(p_day integer) returns text language sql
as $$
select case when p_day=1 then 'Lundi' when p_day=2 then 'Mardi' when p_day=3 then 'Mercredi' when p_day=4 then 'Jeudi' when p_day=5 then 'Vendredi' when p_day=6 then 'Samedi' when p_day=7 then 'Dimanche' else NULL end;
$$;
CREATE FUNCTION

select i, dow(i) from generate_series(1, 8) i;
 i |   dow    
---+----------
 1 | Lundi
 2 | Mardi
 3 | Mercredi
 4 | Jeudi
 5 | Vendredi
 6 | Samedi
 7 | Dimanche
 8 | 
(8 rows)

Deux minutes à écrire.


Guillaume.

Hors ligne

#9 06/05/2015 22:28:47

cedric
Membre

Re : SQL : Convertir numéro du jour dans la semaine en texte

pas parfait, ce serait plus agréable avec 0001-01-00 comme date de départ ( mais ce n'est pas une date valide):

# prepare dow (int) as select to_char('0001-01-07'::date + $1,'Day');
# execute dow(1);

Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

Pied de page des forums