PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment to_char() fonctionne dans PostgreSQL

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ème 

Dans 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 soit 9 ou 0 .

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ème 

Liste 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