Dans Postgres, to_char()
est une fonction de formatage de type de données qui convertit son premier argument en chaîne.
Le format de la chaîne est déterminé par le deuxième argument.
Le to_char()
La fonction peut être utilisée pour effectuer les conversions suivantes :
- horodatage de la chaîne
- intervalle à chaîne
- entier en chaîne
- réel/double précision en chaîne
- numérique en chaîne
Syntaxe
La syntaxe ressemble à ceci :
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Où le premier argument est la valeur à convertir (dans l'un des types de données répertoriés) et text
est une chaîne de format avec laquelle formater le premier argument.
Exemple
Voici un exemple de formatage d'une valeur de date :
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Résultat :
vendredi 25 décembre 2020
Dans ce cas, la chaîne de format Day, DD Month YYYY
détermine comment la date est formatée lorsqu'elle est renvoyée sous forme de chaîne par to_char()
.
Modèles de modèle
La chaîne de format consiste en un ou plusieurs modèles de modèle .
Dans l'exemple précédent, ma chaîne de format était Day, DD Month YYYY
. Par conséquent, il se composait des modèles de modèles suivants :
Day
DD
Month
YYYY
J'aurais pu utiliser plus ou moins de modèles de modèles, et le résultat aurait été différent.
Par exemple, j'aurais pu faire ce qui suit :
SELECT to_char(date '2020-12-25', 'Day');
Résultat :
vendredi
Alternativement, ma chaîne de format aurait pu consister en une série différente de modèles de modèles.
Par exemple :
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Résultat :
ven. 25 déc. 20
Modificateurs de modèle de modèle
Vous pouvez également ajouter des modificateurs de modèle de modèle à votre chaîne de format.
Le résultat sera légèrement différent selon le modificateur utilisé.
Par exemple, l'exemple suivant présente le jour du mois sous la forme d'un nombre ordinal.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Résultat :
Vendredi 25 décembre 2020
C'est le même que le premier exemple mais la différence est que j'ai ajouté le th
modificateur de modèle comme suffixe au DD
modèle de modèle. Ceci ajoute le suffixe du nombre ordinal au jour du mois.
Nous nous retrouvons donc avec 25ème au lieu de seulement 25 .
Pour accentuer l'effet du modificateur de modèle, voici à quoi il ressemble lorsqu'il est appliqué à différentes valeurs.
SELECT
to_char(date '2020-12-01', 'DDth') AS "1",
to_char(date '2020-12-02', 'DDth') AS "2",
to_char(date '2020-12-03', 'DDth') AS "3",
to_char(date '2020-12-04', 'DDth') AS "4";
Résultat :
1 | 2 | 3 | 4 ------+------+------+------ 01e | 02e | 03e | 04ème
Je pourrais ajouter un autre modificateur pour supprimer les zéros non significatifs si nécessaire.
SELECT
to_char(date '2020-12-01', 'FMDDth') AS "1",
to_char(date '2020-12-02', 'FMDDth') AS "2",
to_char(date '2020-12-03', 'FMDDth') AS "3",
to_char(date '2020-12-04', 'FMDDth') AS "4";
Résultat :
1 | 2 | 3 | 4 -----+-----+-----+----- 1er | 2e | 3e | 4èmeDans ce cas, j'ai ajouté
FM
qui est pour le "mode de remplissage". Ce modificateur supprime les zéros non significatifs et les blancs de remplissage.Numérique
L'exemple précédent peut également être appliqué à des valeurs numériques.
Cependant, lorsque vous utilisez des valeurs numériques, vous devrez échanger
D
avec soit9
ou0
.SELECT to_char(1, '9th') AS "1", to_char(2, '9th') AS "2", to_char(3, '9th') AS "3", to_char(4, '9th') AS "4";
Résultat :
1 | 2 | 3 | 4 ------+------+------+------ 1er | 2e | 3e | 4èmeListe des modèles de modèles et des modificateurs
Les modèles de modèles réels que vous pouvez utiliser varient selon que vous formatez une valeur de date/heure ou un nombre.
Pour une liste complète des modèles de modèles disponibles, consultez :
- Modèles de modèle et modificateurs pour le formatage de la date/heure
- Modèles de modèle et modificateurs pour le formatage numérique