Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Funcion para contar los sabados y domingos en oracle

Estas en el tema de Funcion para contar los sabados y domingos en oracle en el foro de Oracle en Foros del Web. Hola amigos del foro: Bueno el problema que tengo es el siguiente, estoy utilizando Oracle 10g y lo que necesito es una funcion que me ...
  #1 (permalink)  
Antiguo 21/08/2012, 10:11
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Funcion para contar los sabados y domingos en oracle

Hola amigos del foro:
Bueno el problema que tengo es el siguiente, estoy utilizando Oracle 10g y lo que necesito es una funcion que me cuente la cantidad de sabados y domingos pasandole como parametros el mes y año. Por ejemplo si le paso como parametros (01,2012) me tendria que devolver 9; porque en enero de 2012 hay 4 sabados y 5 domingos.
Gracias de antemano
  #2 (permalink)  
Antiguo 21/08/2012, 14:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Funcion para contar los sabados y domingos en oracle

Mira este ejemplo en bloque anonimo.

Lo puedes llevar a una función y traer los datos que requieres.
Código SQL:
Ver original
  1. SQL> DECLARE
  2.  contador_sabados NUMBER := 0;
  3.  contador_domingos NUMBER :=0;
  4.  ano VARCHAR2(4) := '&valorano';
  5.  mes VARCHAR2(2) := '&valormes';
  6.    
  7.  fecha_inicio DATE;
  8.  fecha_fin DATE;
  9.    
  10.  BEGIN
  11.   fecha_inicio := to_date(ano||mes||'01','YYYYMMDD');
  12.    fecha_fin := last_day(to_date(ano||mes||'01','YYYYMMDD'));
  13.  
  14.   WHILE fecha_inicio <= fecha_fin LOOP
  15.      IF TRIM(to_char(fecha_inicio,'DAY', 'NLS_DATE_LANGUAGE=SPANISH')) = 'SÁBADO' THEN
  16.          contador_sabados := contador_sabados + 1;
  17.      END IF;
  18.      IF TRIM(to_char(fecha_inicio,'DAY', 'NLS_DATE_LANGUAGE=SPANISH')) = 'DOMINGO' THEN
  19.           contador_domingos := contador_domingos + 1;
  20.      END IF;
  21.      fecha_inicio := fecha_inicio + 1;
  22.   END LOOP;
  23.  dbms_output.put_line('hay '||contador_sabados||' sabados y '||contador_domingos||' domingos. Para un total de: '||(contador_sabados+contador_domingos));
  24.  
  25.   END;
  26.   /
  27.  
  28. hay 4 sabados y 5 domingos. Para un total de: 9
  29.  
  30. PL/SQL PROCEDURE successfully completed
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:56.