Fechas y horassolo PostgreSQL

MAKE_DATE

Construye una fecha a partir de números sueltos: el año, el mes y el día.

Sintaxis

MAKE_DATE(<año>, <mes>, <día>)
MAKE_TIMESTAMP(<año>, <mes>, <día>, <hora>, <minuto>, <segundo>)

Útil cuando el año, el mes y el día se guardan como números separados o se calculan. A diferencia de pegar texto, no tienes que preocuparte por el formato ni por los ceros a la izquierda. Para una fecha con hora existe MAKE_TIMESTAMP.

Una fecha a partir de tres números
SELECT MAKE_DATE(2026, 9, 13) AS day;
day
2026-09-13
Una fecha con hora
SELECT MAKE_TIMESTAMP(2026, 9, 13, 15, 47, 0) AS moment;
moment
2026-09-13 15:47:00
El último día de febrero
SELECT MAKE_DATE(2028, 3, 1) - 1 AS last_day_of_february;
last_day_of_february
2028-02-29

Tomamos el 1 de marzo y restamos un día: los años bisiestos se tienen en cuenta solos.

Ten en cuenta

Una fecha que no existe es un error, no un salto al mes siguiente: MAKE_DATE(2026, 2, 30) da date field value out of range.

Los argumentos son enteros. EXTRACT devuelve numeric, así que MAKE_DATE(EXTRACT(YEAR FROM created_at), 1, 1) da el error function make_date(numeric, integer, integer) does not exist. Convierte el tipo: EXTRACT(YEAR FROM created_at)::int.

Funciones relacionadas