FAQ Procura Membros Registre-se Perfil MP's Login/Out
Veja também:
Função para dias úteis
Diferença entre datas considerando somente os dias úteis
Formato de Datas - Consulta rápida

Dias Uteis

 
Novo Tópico   Responder Mensagem    glufke.net - Índice do Fórum -> PL/SQL
Mensagem Autor
Enviada: Seg, 16 Fev 2009 1:49 pm     Assunto: Dias Uteis

Atualmente recebo a data do sistema e adiciono mais a quantidade de dias de outra tabela.
Eis a questão, não sei o comando que diferencia sabados e domingos.
Preciso que adicione a data do sistema para gerar data limite, somando apenas dias de segunda a sexta.
alguém pod eme ajudar ?

(select sysdate + t.nu_pz_hr_tipo_solicitacao/24
from agp.agptb003_tipo_solicitacao t
where t.nu_tipo_solicitacao = nuTipoSolicitacao
),

Grato,
Guilherme Rodrigues
groliveira
Rank: Estagiário Pleno
Rank: Estagiário Pleno


Registrado em: Seg, 16 de Fevereiro de 2009
Mensagens: 5
Cidade - UF: DF


Enviada: Seg, 16 Fev 2009 3:54 pm    

Aqui tem um exemplo de como saber se o dia é sábado ou domingo:
http://glufke.net/oracle/viewtopic.php?t=904

Se ainda tiver dúvidas, manda pra gente !
_________________
Thomas F. G.
Campanha: Faça uma pesquisa antes de perguntar!!!
dr_gori
Moderador
Moderador


Registrado em: Seg, 3 de Mai de 2004
Mensagens: 3222
Cidade - UF: Porto Alegre - RS


Enviada: Ter, 17 Fev 2009 11:19 am     Assunto: Quase

Seguinte tenho mais ou menos a ideia já...

Mais não sei como implementar...

(select sysdate + t.nu_pz_hr_tipo_solicitacao/24
from agp.agptb003_tipo_solicitacao t
where t.nu_tipo_solicitacao = nuTipoSolicitacao
),

No caso ficaria assim

Prazo := (O select acima)
Dia := Sysdate

For i = 1 to <= Prazo
Dia := Dia + 1
If Dia day = 'Saturday'
Dia := Dia + 2 -- No caso Somando Sabado e Domingo
EndIf
i := i + 1
EndFor

Grato
groliveira
Rank: Estagiário Pleno
Rank: Estagiário Pleno


Registrado em: Seg, 16 de Fevereiro de 2009
Mensagens: 5
Cidade - UF: DF


Enviada: Ter, 17 Fev 2009 1:52 pm    

RESPOSTA colocada por groliveira em outro tópico:
-----------------------------------------------------------


Atualmente o Select está assim:


Código:
create or replace procedure AGPSP007_INCLUI_SOLICITACAO(coProtocoloAtendimento IN FLOAT,
--F998120  09/12/2008 16:09:47
--F978268  27/11/2008 20:04:42
--F978268  27/11/2008 19:58:13

                                      nuSolicitacao IN FLOAT,
                                      nuTipoSolicitacao IN INTEGER,
                                      nuDestino IN INTEGER,
                                      nuItemDestino IN INTEGER,
                                      nuSubItemDestino IN INTEGER,
                                      deSolicitacao IN STRING,
                                      nuSituacaoSolicitacao IN FLOAT,
                                      coMatriculaCriacao IN STRING) as
begin

  insert into agp.agptb002_solicitacao
    (co_protocolo_atendimento,
     nu_solicitacao,
     nu_tipo_solicitacao,
     nu_destino,
     nu_item_destino,
     nu_sub_item_destino,
     de_solicitacao,
     nu_situacao_solicitacao,
     dt_limite_solicitacao,
     dt_solicitacao,
     co_matricula_criacao,
     co_matricula_alteracao)
  values
    (coProtocoloAtendimento,
     agp.AGPSQ002_SOLICITACAO.NEXTVAL,
     nuTipoSolicitacao,
     nuDestino,
     nuItemDestino,
     nuSubItemDestino,
     deSolicitacao,
     nuSituacaoSolicitacao,
     
     (select sysdate + t.nu_pz_hr_tipo_solicitacao/24
      from agp.agptb003_tipo_solicitacao t
      where t.nu_tipo_solicitacao = nuTipoSolicitacao
       

      ),

     
      sysdate,
     coMatriculaCriacao,
     coMatriculaCriacao);

end;




A minha idéia seria mais ou menos assim


(select sysdate + t.nu_pz_hr_tipo_solicitacao/24
from agp.agptb003_tipo_solicitacao t
where t.nu_tipo_solicitacao = nuTipoSolicitacao
),

No caso ficaria assim:

Prazo := (O select acima)
Dia := Sysdate

For i = 1 to <= Prazo
Dia := Dia + 1
If Dia day = 'Saturday'
Dia := Dia + 2 -- No caso Somando Sabado e Domingo
EndIf
i := i + 1
EndFor


Preciso Somar os dias acrescentando dois dias a mais na contagem caso durante a contagem passe por um sabado...

Preciso de ajuda do pessoal fera ai...
_________________
Thomas F. G.
Campanha: Faça uma pesquisa antes de perguntar!!!
dr_gori
Moderador
Moderador


Registrado em: Seg, 3 de Mai de 2004
Mensagens: 3222
Cidade - UF: Porto Alegre - RS


Enviada: Qua, 18 Fev 2009 5:46 pm     Assunto: procedure

Pessoal enfim, que puder ajudar eu agradeço...

Meu problema está assim...

Eu pego o sysdate.
Tenho o prazo em horas já cadastrados, tenho que considerar por dias.

Quando pego esse prazo, tenho que somar ao Sysdate para retornar uma data limite.

O problema é que tenho que retornar essa data limite considerando apenas dias uteis...
Caso durante o prazo de dias passe por um sabado, tenho que somar mais 2 dias no prazo pelo fato de somar apenas dias uteis

Criei um procedure que faz essa soma, e gostaria de saber opinioes de você pois nessa procedure esta dando erro...

Código:
create or replace procedure AGPSP042_DIAS_UTEIS(
                            nuTipoSolicitacao IN INTEGER)
as

Begin

Declare

Prazo Integer;
Dia date;
i integer;

Begin

Dia := Sysdate;

execute immediate 'Select
      t.nu_pz_hr_tipo_solicitacao/24
      from agp.agptb003_tipo_solicitacao t
      where t.nu_tipo_solicitacao = nuTipoSolicitacao'
      INTO Prazo;

    FOR x in 1..Prazo
    LOOP
    Dia := Dia + 1;
        if to_char(Dia, 'Day') = 'Saturday'
          then
          Dia := Dia + 2; -- No caso Somando Sabado e Domingo
         End If;
    i := i + 1;
    END LOOP;
END;

END;


Pessoal DBAMAN ai de uma forca ai
groliveira
Rank: Estagiário Pleno
Rank: Estagiário Pleno


Registrado em: Seg, 16 de Fevereiro de 2009
Mensagens: 5
Cidade - UF: DF


Enviada: Qui, 19 Fev 2009 10:25 am    

A grande dficuldade com esse tipo de requisito é a necessidade de tratar os feriados como dia não-útil. Suas regras podem ainda pedir que considere-se ou não feriados municipais, o que complica ainda mais.
Para esse tipo de requisito você provavelmente teria que criar uma tabela de cadastro dos feriados e funções de suporte, retornando o próximo e o dia útil anterior.
_________________
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-to-ask-questions.html

OCA Developer — OCP Advanced PL/SQL 11g — Oracle Database Certified SQL Expert
fsitja
Rank: Oracle Guru
Rank: Oracle Guru


Registrado em: Seg, 19 de Janeiro de 2009
Mensagens: 450
Cidade - UF: Gaúcho no Rio de Janeiro - RJ


Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    glufke.net - Índice do Fórum -> PL/SQL Todos os horários são GMT - 3 Hours
Página 1 de 1

 
 
. .