SQL - Filtrar por fecha y mostrar mes

 
Vista:
sin imagen de perfil

Filtrar por fecha y mostrar mes

Publicado por Alex (4 intervenciones) el 10/12/2014 09:52:09
Hola a todos,

Dispongo de una BBDD en la que en una columna (date) aparece una fecha en formato de dia: 141210 (12 de diciembre de 2014).

Tengo que filtrar una serie de datos de cada mes. Si lo hago mes a mes es facil, simplemente:

SELECT
campo_de_información

FROM
Tabla_de_interes

WHERE
date between 141101 and 141130
-- Así filtro solo los datos del mes de noviembre

Mi pregunta es la siguiente: Puedo hacer una consulta de todos los meses a la vez y ordenar la información mes a mes? Si la columna date pusiera el nombre del mes, sería mucho más facil, pues haría un:

WHERE
date=noviembre
date=septiembre
...

GROUP BY date

Pero al tener la tabla con los días no se como lo podría hacer.Tal vez existe alguna opción para decir algo parecido a esto:

if
date between 141001 and 141031 then date = octubre
else if
date between 141101 and 141130 then date = noviembre
...

Es decir, etiquetar todas las fechas de ese grupo con un único nombre para posteriormente poder agruparlas.

Muchas Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Filtrar por fecha y mostrar mes

Publicado por leonardo_josue (1173 intervenciones) el 10/12/2014 16:14:28
Hola Alex:

En primer lugar, ¿con qué Base de Datos estás trabajando? Este dato es muy importante, pues el manejo de fechas es muy distinto en cada uno de los distintos DBMS.

Segundo, ¿la columna es de tipo DATE? me parece muy extraño que menciones que la fecha está en un formato yymmdd, ya que la mayoría de los DBMS manejan las fechas en formato ANSI (yyyy-mm-dd), lo que me hace suponer que estás manejando la fecha como un varchar, o como algún dato numérico.

Tercero, la mayoría de los DBMS's poseen funciones propias de fecha y hora, de tal manera que puedes extraer la parte de la fecha que realmente necesitas, así por ejemplo MySQL tiene las funciones MONTH o MONTHNAME para extraer el mes:

1
2
3
4
5
6
7
='editor_code'>mysql> SELECT MONTH('2014-12-10');
+---------------------+
| MONTH('2014-12-10') |
+---------------------+
|                  12 |
+---------------------+
1 row in set (0.02 sec)
mysql> SELECT MONTHNAME('2014-12-10'); +-------------------------+ | MONTHNAME('2014-12-10') | +-------------------------+ | December | +-------------------------+ 1 row in set (0.03 sec)
Con ORACLE sería con TO_CHAR y el operador MONTH:

1
SELECT TO_CHAR(sysdate, 'Month') FROM dual;

y así todos los DMBS. Investiga un poco en la documentación de tu Manejador para encontrar la equivalencia que necesitas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar