Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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 , 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