sql >> Database teknologi >  >> RDS >> PostgreSQL

3 funktioner, der henter dagen, måneden og året fra en dato i PostgreSQL

PostgreSQL giver os flere måder at få dagen, måneden og året fra en dato på.

Tre funktioner, der umiddelbart kommer til at tænke på er; DATE_PART() , EXTRACT() , og TO_CHAR() .

EXTRACT()

EXTRACT() funktion henter underfelter såsom år, måned, time eller minut, en del fra en dato/tidsværdi.

Eksempel:

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

Resultat:

2035

Vi kan returnere forskellige datodele i separate felter ved at foretage tre separate kald til denne 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:

Dag | DOW | DOY | Måned | Årgang -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035

Her returnerede jeg månedsdagen, ugedagen, årets dag, måneden og året fra datoen.

Se Hvordan Extract() virker i PostgreSQL for flere eksempler og en liste over feltnavne, der kan returneres af denne funktion.

DATE_PART()

DATE_PART() funktion svarer til EXTRACT() , men med en lidt anden syntaks.

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:

Dag | DOW | DOY | Måned | Årgang -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035

Denne funktion kræver, at det første argument angives som en streng, og et komma adskiller de to argumenter i stedet for FROM søgeord.

TO_CHAR()

TO_CHAR() Funktionen er mere fleksibel, idet den kan bruges til at give et bredere udvalg af output. For eksempel kan vi bruge denne funktion til at returnere dag, måned og år i ét felt:

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

Resultat:

 Lørdag den 2. december 2045

Vi kan bruge fm skabelonmodifikator for at undertrykke enhver udfyldning, der kan anvendes:

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

Resultat:

 Mandag den 1. april 2165

Bemærk også, at den th skabelonmodifikator er smart nok til at vide, om st , nd , rd eller th skal tilføjes.

Her er et eksempel, der bruger forskellige kald til TO_CHAR() at udskrive forskellige datodele i separate felter:

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:

Dag | DD | Måned | ÅÅÅÅ ----------------------------------------- Mandag | 1 | april | 2165
  1. Hvorfor kan jeg ikke ekskludere afhængige kolonner fra "GROUP BY", når jeg samler med en nøgle?

  2. MySQL Group By og Sum total værdi af anden kolonne

  3. Sådan ombrydes lange tekstlinjer i SQLite-resultater

  4. Sådan formateres måneden i romertal i Oracle