PostgreSQL nous offre plusieurs façons d'obtenir le jour, le mois et l'année à partir d'une date.
Trois fonctions qui viennent immédiatement à l'esprit sont; DATE_PART()
, EXTRACT()
, et TO_CHAR()
.
EXTRACT()
Le EXTRACT()
la fonction récupère des sous-champs tels que l'année, le mois, l'heure ou la minute, à partir d'une valeur de date/heure.
Exemple :
SELECT EXTRACT(YEAR FROM date '2035-10-30');
Résultat :
2035
Nous pouvons renvoyer différentes parties de date dans des champs distincts en effectuant trois appels distincts à cette fonction :
SELECT
EXTRACT(DAY FROM date '2035-10-30') AS "Day",
EXTRACT(DOW FROM date '2035-10-30') AS "DOW",
EXTRACT(DOY FROM date '2035-10-30') AS "DOY",
EXTRACT(MONTH FROM date '2035-10-30') AS "Month",
EXTRACT(YEAR FROM date '2035-10-30') AS "Year";
Résultat :
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Ici, j'ai renvoyé le jour du mois, le jour de la semaine, le jour de l'année, le mois et l'année à partir de la date.
Voir Fonctionnement d'Extract() dans PostgreSQL pour plus d'exemples et une liste des noms de champs pouvant être renvoyés par cette fonction.
DATE_PART()
Le DATE_PART()
la fonction est l'équivalent de EXTRACT()
, mais avec une syntaxe légèrement différente.
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year";
Résultat :
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Cette fonction nécessite que le premier argument soit fourni sous forme de chaîne et qu'une virgule sépare les deux arguments au lieu de FROM
mot-clé.
TO_CHAR()
Le TO_CHAR()
La fonction est plus flexible, en ce sens qu'elle peut être utilisée pour fournir une plus grande variété de sorties. Par exemple, nous pouvons utiliser cette fonction pour renvoyer le jour, le mois et l'année dans un seul champ :
SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY');
Résultat :
Saturday , 02nd December 2045
Nous pouvons utiliser le fm
modificateur de modèle pour supprimer tout rembourrage pouvant être appliqué :
SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY');
Résultat :
Monday, 1st April 2165
Notez également que le th
modificateur de modèle est assez intelligent pour savoir si st
, nd
, rd
, ou th
doit être ajouté.
Voici un exemple qui utilise divers appels à TO_CHAR()
pour afficher différentes parties de date dans des champs séparés :
SELECT
TO_CHAR(date '2165-04-01', 'fmDay') AS "Day",
TO_CHAR(date '2165-04-01', 'fmDD') AS "DD",
TO_CHAR(date '2165-04-01', 'fmMonth') AS "Month",
TO_CHAR(date '2165-04-01', 'YYYY') AS "YYYY";
Résultat :
Day | DD | Month | YYYY --------+----+-------+------ Monday | 1 | April | 2165