|
|
| 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

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


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

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


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

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


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