sql >> Databasteknik >  >> RDS >> PostgreSQL

3 funktioner som hämtar dagen, månaden och året från ett datum i PostgreSQL

PostgreSQL ger oss flera sätt att få dagen, månaden och året från ett datum.

Tre funktioner som direkt kommer att tänka på är; DATE_PART() , EXTRACT() och TO_CHAR() .

EXTRACT()

EXTRACT() funktionen hämtar underfält som år, månad, timme eller minut, del från ett datum-/tidsvärde.

Exempel:

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

Resultat:

2035

Vi kan returnera olika datumdelar i separata fält genom att göra tre separata anrop till denna funktion:

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

Resultat:

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

Här returnerade jag månadsdagen, veckodagen, årets dag, månaden och året från datumet.

Se Hur Extract() fungerar i PostgreSQL för fler exempel och en lista över fältnamn som kan returneras av den här funktionen.

DATE_PART()

DATE_PART() funktion är motsvarigheten till EXTRACT() , men med en något annorlunda syntax.

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

Resultat:

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

Den här funktionen kräver att det första argumentet tillhandahålls som en sträng och ett kommatecken skiljer de två argumenten åt istället för FROM nyckelord.

TO_CHAR()

TO_CHAR() Funktionen är mer flexibel, eftersom den kan användas för att tillhandahålla ett större utbud av utgångar. Till exempel kan vi använda den här funktionen för att returnera dagen, månaden och året i ett fält:

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

Resultat:

 Saturday , 02nd December  2045

Vi kan använda fm mallmodifierare för att undertrycka eventuell utfyllnad som kan tillämpas:

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

Resultat:

 Monday, 1st April 2165

Observera också att den th mallmodifierare är smart nog att veta om st , nd , rd , eller th bör läggas till.

Här är ett exempel som använder olika anrop till TO_CHAR() för att mata ut olika datumdelar i separata fält:

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

Resultat:

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

  1. Hur infogar jag flera kryssrutor i en tabell?

  2. Hur flexibla/begränsande är SQLite-kolumntyper?

  3. 4 viktiga databasövervakningsaktiviteter som varje DBA bör känna till

  4. Vad är det som skickar parametrar till SQL och varför behöver jag det?