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
Agrupando por mes y año
Ahora añadiremos una clausula Where para filtrar por año
También podemos filtrar por días
Y filtrar por días concretos
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.
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.