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