PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

3 funções que obtêm o dia, mês e ano de uma data no PostgreSQL


O PostgreSQL nos fornece várias maneiras de obter o dia, mês e ano de uma data.

Três funções que vêm imediatamente à mente são; DATE_PART() , EXTRACT() e TO_CHAR() .

EXTRACT()


O EXTRACT() função recupera subcampos como ano, mês, hora ou minuto, parte de um valor de data/hora.

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

Resultado:
2035

Podemos retornar diferentes partes da data em campos separados fazendo três chamadas separadas para esta função:
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";

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

Aqui, retornei o dia do mês, o dia da semana, o dia do ano, o mês e o ano a partir da data.

Veja Como Extract() Funciona no PostgreSQL para mais exemplos e uma lista de nomes de campos que podem ser retornados por esta função.

DATE_PART()


O DATE_PART() função é equivalente a EXTRACT() , mas com uma sintaxe ligeiramente diferente.
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";

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

Esta função requer que o primeiro argumento seja fornecido como uma string e uma vírgula separa os dois argumentos em vez do FROM palavra-chave.

TO_CHAR()


O TO_CHAR() A função é mais flexível, na medida em que pode ser usada para fornecer uma variedade maior de saídas. Por exemplo, podemos usar esta função para retornar o dia, mês e ano em um campo:
SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY');

Resultado:
 Saturday , 02nd December  2045

Podemos usar o fm modificador de modelo para suprimir qualquer preenchimento que possa ser aplicado:
SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY');

Resultado:
 Monday, 1st April 2165

Observe também que o th modificador de template é inteligente o suficiente para saber se st , nd , rd , ou th deve ser anexado.

Aqui está um exemplo que usa várias chamadas para TO_CHAR() para gerar várias partes de data em campos separados:
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";

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