sql >> Base de Datos >  >> RDS >> PostgreSQL

3 funciones que obtienen el día, mes y año de una fecha en PostgreSQL

PostgreSQL nos proporciona varias formas de obtener el día, el mes y el año de una fecha.

Tres funciones que inmediatamente vienen a la mente son; DATE_PART() , EXTRACT() y TO_CHAR() .

EXTRACT()

El EXTRACT() función recupera subcampos como el año, mes, hora o minuto, parte de un valor de fecha/hora.

Ejemplo:

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

Resultado:

2035

Podemos devolver diferentes partes de fechas en campos separados haciendo tres llamadas separadas a esta función:

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

Aquí, devolví el día del mes, el día de la semana, el día del año, el mes y el año a partir de la fecha.

Consulte Cómo funciona Extract() en PostgreSQL para obtener más ejemplos y una lista de nombres de campo que puede devolver esta función.

DATE_PART()

El DATE_PART() la función es el equivalente de EXTRACT() , pero con una sintaxis ligeramente 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 función requiere que el primer argumento se proporcione como una cadena y una coma separe los dos argumentos en lugar de FROM palabra clave.

TO_CHAR()

El TO_CHAR() La función es más flexible, ya que se puede utilizar para proporcionar una variedad más amplia de resultados. Por ejemplo, podemos usar esta función para devolver el día, el mes y el año en un solo campo:

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

Resultado:

 Saturday , 02nd December  2045

Podemos usar el fm modificador de plantilla para suprimir cualquier relleno que se pueda aplicar:

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

Resultado:

 Monday, 1st April 2165

También tenga en cuenta que el th modificador de plantilla es lo suficientemente inteligente como para saber si st , nd , rd , o th debe agregarse.

Aquí hay un ejemplo que usa varias llamadas a TO_CHAR() para generar varias partes de fecha en 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