Skip to content

Filtrar consultas SQL por día de la semana

27 noviembre 2010

Siguiendo con esta pequeña serie de consultas en SQL, vamos a ver hoy una consulta, a priori simple, que consiste en listar todos los eventos que tengamos almacenados en nuestra tabla dentro de la base de datos, pero sólo aquellos que tengan lugar en un día de la semana determinado: Lunes, Martes, Miercoles, Jueves, Viernes, Sábado o Domingo.

Para ello sólo necesitamos tener en nuestra tabla una columna de tipo Timestamp y hacer uso de la función to_chat de PostgreSQL. Como habréis deducido esta pequeña consulta está orientada al SGBD PostgreSQL.

Vamos allá…

Nuestra tabla debe tener una columna de tipo Timestamp ya que todas las comprobaciones las vamos a hacer sobre ese campo, el resto de columnas dependerá de la información que os interese tener almacenada en esa tabla.

La consulta sería la siguiente, ahora explicamos brevemente en qué consiste:

Select * From "TablaEventos"
Where to_char("Timestamp", 'FMDay') = 'Monday';

Seleccionamos todos los campos de la tabla y aplicamos la función to_char al campo “Timestamp”. Esta función evaluará el timestamp y nos devolverá en este caso el día de la semana al que pertenece esa fecha. El parámetro FMDay es el que le va a indicar a la función to_char qué parte de la fecha queremos que nos devuelva en forma de string (o Text para PostgreSQL). Ponemos el prefijo FM delante de Day, ya que por defecto, si ponemos Day simplemente, la función to_char nos va a devolver la salida formateada, de manera que va a insertar espacios en blanco justo delante o justo detrás lo que nos complicaría en gran medida la comparación en el igual y en esta ocasión no nos interesa esa opción.

Aquí tenéis la API de la función. Si miráis en la tabla 9-21, veréis todas las posibilidades de parametrización que acepta la función. En la tabla 9-22, se detalla el funcionamiento de los prefijos y sufijos que podemos utilizar.

En este caso yo estoy comparando en el ‘where’ con la cadena ‘Monday’ ya que el idioma por defecto de mi SGBD está en inglés.

Hasta aquí esta breve pero útil  consulta, cualquier mejora, duda, 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: