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

3 fonctions qui obtiennent le jour, le mois et l'année à partir d'une date dans PostgreSQL

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