Skip to content

Filtrado Temporal de Consultas SQL en PostgreSQL

23 octubre 2010

Supongamos que tenemos una tabla de eventos en nuestra base de datos, en la que almacenamos información sobre eventos que han sucedido en el sistema. Por ejemplo, un identificador del evento, el usuario que ha provocado ese evento, la acción que lleva a cabo y el momento exacto en el que sucede el evento. Lo normal es que ese momento exacto en el que sucede el evento lo identifiquemos mediante un Timestamp.

Imaginemos ahora que nuestra tabla almacena hasta la fecha todo un mes de eventos, digamos 1.000 eventos en total. Nuestra intención es hacer una consulta SQL que nos permita obtener los eventos que han sucedido en un solo día en concreto.

¿Cómo creamos esa consulta? Vamos a verlo, es realmente simple.

Como hemos dicho anteriormente, nuestra tabla tendrá la siguiente forma:

id[pk] | user | action | date

id, user y action serán de tipo Text y date será de tipo Timestamp.

Nuestra intención es diseñar una consulta que nos devuelva todos los eventos ocurridos en el día 1.

SELECT id, user, action 
FROM "Events" 
WHERE date_part('day', date) = 1;

La parte interesante de la consulta, radica en la función date_part. Esta función nos va a permitir obtener una parte de una fecha de tipo Timestamp y poder comparar ese elemento que hemos obtenido con el valor que le indiquemos. En esta ocasión estamos obteniendo el día, pero podríamos preguntar por el mes (‘month’), el año (‘year’), los minutos(‘minute’), las horas(‘hour’), … Como vemos, para obtener la fecha, le indicamos que mire en la columna date. Por tanto, para cada tupla, consultará su columna date y obtendrá el Timestamp de dicha columna.

Si echáis un vistazo a la documentación oficial de Postgre veréis que hay muchas más opciones para utilizar en esta función.

Como siempre ya sabéis, cualquier duda, mejora, sugerencia,… será bien recibida 😉

Anuncios
No comments yet

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: