Fechas y horassolo PostgreSQL

DATE_PART

Saca una parte concreta de una fecha u hora: lo mismo que EXTRACT, pero como función normal.

Sintaxis

DATE_PART('<campo>', <fecha u hora>)

Devuelve el año, el mes, el día, la hora, etcétera. Hace lo mismo que EXTRACT, solo que el campo se escribe entre comillas como primer argumento: DATE_PART('month', created_at). La diferencia está en el tipo: DATE_PART devuelve double precision, y EXTRACT, numeric.

Datos para los ejemplos

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Año y hora
SELECT DATE_PART('year', TIMESTAMP '2026-09-13 15:47') AS year,
DATE_PART('hour', TIMESTAMP '2026-09-13 15:47') AS hour;
yearhour
202615
El mes de cada pedido
SELECT id, created_at,
DATE_PART('month', created_at) AS month
FROM orders;
idcreated_atmonth
12026-07-03 10:15:007
22026-07-28 18:40:007
32026-08-09 09:05:008
42026-08-21 14:30:008
52026-09-02 11:00:009
Cuántos segundos tiene un intervalo
SELECT DATE_PART('epoch', INTERVAL '2 hours') AS seconds;
seconds
7200

Para un intervalo, 'epoch' es su duración en segundos.

Ten en cuenta

El campo va entre comillas: DATE_PART(month, created_at) sin comillas da el error column "month" does not exist, porque PostgreSQL busca una columna.

Devuelve un número, no un nombre: DATE_PART('month', …) da 9, no September. El nombre lo da TO_CHAR(created_at, 'FMMonth').

Igual que EXTRACT, no sirve para agrupar por meses: septiembre de años distintos se junta. Usa DATE_TRUNC.

Funciones relacionadas