Publicidad

Extraer día, mes, año y hora de una fecha en postgreSQL


Por Alex el 12/11/2021, Comentar el artículo

Comparte este artículo:      




Trabajar con fechas en consultas postgreSQL suele ser lo mas normal a la hora de filtrar u obtener datos y puede ser algo liado si no conocemos las funciones de extracción de fechas que tiene postgreSQL ...


Tiempo atrás ya realice un articulo similar para extraer día, mes y año de una fecha en postgreSQL, postgreSQL extraer fechas de un timestamp pero en este lo vamos ha realizar con la misma base de datos de ejemplo que he utilizado para MySql, Extraer día, mes, año y hora de una fecha en MySql

Al final del artículo os dejo los scripts de creación de la tabla y los datos en postgreSQL

En esta ocasión no comento mucho las consultas porque están comentadas en el artículo de MySql me limito a migrar las consultas para que funcionen en postgreSQL

Obtener el numero total de registros por año

Select count(EXTRACT(YEAR FROM payment_date)) as total, EXTRACT(YEAR 
FROM payment_date) as año FROM payment 
GROUP BY EXTRACT(YEAR FROM payment_date)


Agrupando por mes y año

Select count(EXTRACT(MONTH FROM payment_date)) as total, EXTRACT(MONTH FROM payment_date), EXTRACT(YEAR FROM payment_date) as año 
FROM payment 
GROUP BY EXTRACT(YEAR FROM payment_date), EXTRACT(MONTH FROM payment_date)


Ahora añadiremos una clausula Where para filtrar por año

Select count(EXTRACT(MONTH FROM payment_date)) as total, EXTRACT(MONTH FROM payment_date), EXTRACT(YEAR FROM payment_date) as año 
FROM payment 
WHERE EXTRACT(YEAR FROM payment_date) = '2005'
GROUP BY EXTRACT(YEAR FROM payment_date), EXTRACT(MONTH FROM payment_date)


También podemos filtrar por días

Select count(EXTRACT(DAY FROM payment_date)) as total, EXTRACT(DAY FROM payment_date) as dia, 
EXTRACT(MONTH FROM payment_date) as mes, EXTRACT(YEAR FROM payment_date) as año
FROM payment
GROUP BY  EXTRACT(DAY FROM payment_date), EXTRACT(MONTH FROM payment_date), EXTRACT(YEAR FROM payment_date)


Y filtrar por días concretos

Select count(EXTRACT(DAY FROM payment_date)) as total, EXTRACT(DAY FROM payment_date) as dia, 
EXTRACT(MONTH FROM payment_date) as mes, EXTRACT(YEAR FROM payment_date)
FROM payment 
WHERE  EXTRACT(DAY FROM payment_date) in ( '21', '27', '14')
GROUP BY  EXTRACT(DAY FROM payment_date), EXTRACT(MONTH FROM payment_date),EXTRACT(YEAR FROM payment_date)


También podemos filtrar por horas, minutos y segundos si es necesario utilizando la función EXTRACT(HOUR FROM payment_date) ...

Os dejo el link a los scripts para crear la tabla payment en postgreSQL, y el link al script que he utilizado para migrar de MySql a postgreSQL, aunque este aun no esta del todo terminado y contiene algún que otro fallo, sobre todo con caracteres raros.

Migrar de MySql a postgreSQL
https://github.com/depruebas/mysql-to-posgresql-migrator

scripts tabla payment
https://github.com/depruebas/tabla-payment-sakila-postgreSQL

Y esto es todo amigos, feliz programming!
Saludos
Alex.



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.