sql >> Database >  >> RDS >> PostgreSQL

3 functies die de dag, de maand en het jaar uit een datum halen in PostgreSQL

PostgreSQL biedt ons verschillende manieren om de dag, de maand en het jaar uit een datum te halen.

Drie functies die meteen in je opkomen zijn; DATE_PART() , EXTRACT() , en TO_CHAR() .

EXTRACT()

De EXTRACT() functie haalt subvelden op, zoals het jaar, de maand, het uur of de minuut, deels uit een datum/tijd-waarde.

Voorbeeld:

SELECT EXTRACT(YEAR FROM date '2035-10-30');

Resultaat:

2035

We kunnen verschillende datumdelen in afzonderlijke velden retourneren door drie afzonderlijke aanroepen naar deze functie te doen:

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";

Resultaat:

 Day | DOW | DOY | Month | Year 
-----+-----+-----+-------+------
  30 |   2 | 303 |    10 | 2035

Hier heb ik de dag van de maand, de dag van de week, de dag van het jaar, de maand en het jaar vanaf de datum geretourneerd.

Zie Hoe Extract() werkt in PostgreSQL voor meer voorbeelden en een lijst met veldnamen die door deze functie kunnen worden geretourneerd.

DATE_PART()

De DATE_PART() functie is het equivalent van EXTRACT() , maar met een iets andere syntaxis.

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";

Resultaat:

 Day | DOW | DOY | Month | Year 
-----+-----+-----+-------+------
  30 |   2 | 303 |    10 | 2035

Deze functie vereist dat het eerste argument wordt opgegeven als een tekenreeks, en een komma scheidt de twee argumenten in plaats van de FROM zoekwoord.

TO_CHAR()

De TO_CHAR() functie is flexibeler, in die zin dat het kan worden gebruikt om een ​​grotere verscheidenheid aan outputs te bieden. We kunnen deze functie bijvoorbeeld gebruiken om de dag, de maand en het jaar allemaal in één veld te retourneren:

SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY');

Resultaat:

 Saturday , 02nd December  2045

We kunnen de fm . gebruiken sjabloonmodifier om eventueel toegepaste opvulling te onderdrukken:

SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY');

Resultaat:

 Monday, 1st April 2165

Merk ook op dat de th sjabloonmodifier is slim genoeg om te weten of st , nd , th , of th moet worden toegevoegd.

Hier is een voorbeeld dat verschillende aanroepen gebruikt naar TO_CHAR() om verschillende datumdelen in aparte velden uit te voeren:

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";

Resultaat:

  Day   | DD | Month | YYYY 
--------+----+-------+------
 Monday | 1  | April | 2165

  1. De SQL OVER()-clausule - wanneer en waarom is het nuttig?

  2. PHP - CSV-bestand importeren in mysql-database met behulp van LOAD DATA INFILE

  3. Hoe krijg ik een onbewerkte, gecompileerde SQL-query van een SQLAlchemy-expressie?

  4. Is het mogelijk om een ​​recursieve SQL-query te maken?