14 octubre 2012

TIP: SQL y fechas; Aquellos maravillosos años..



Si recordáis aquellas consultas megalíticas de los informes que nos hacían hacer con Oracle Reports o con otra herramienta arcana, cuando te pedían informes por trimestre (o “Quarters” si tenías un analista del tipo “Tom Cruise-Wannabe”), me echaba a temblar. Aquí hay una serie de consultas que a lo mejor sirven para algo, nunca se sabe.


  • Número de mes en el trimestre

SQL>select trunc(to_char(sysdate,'mm')/to_char(sysdate,'Q')) fecha from dual;

  •  Número de semana en el trimestre

SQL>select 1 + TRUNC((sysdate - TRUNC(sysdate, 'Q'))/7) fecha from dual; 

  • Número de día en el trimestre

SQL>select trunc(sysdate-trunc(sysdate,'Q'))+1 fecha from dual;

  • ¿La fecha seleccionada es fin de semana?

Tenemos esta tabla Prueba con estos datos y queremos saber si la fecha de inicio cae en fin de semana.
ID
DESCP
FEC_INICIO
FEC_FIN
1
prueba1
02/10/2012

2
prueba2
03/10/2012

3
prueba3
04/10/2012

4
prueba4
06/10/2012


Esta consulta nos devuelve el indicador de fila que se ha creado en fin de semana: 

SQL>Select id FROM rafa.pruebas WHERE MOD(TO_CHAR(fec_inicio, 'J'), 7) + 1 IN (6, 7);
               

 


No hay comentarios:

Publicar un comentario

Por favor deja tu comentario, es valioso.