Boa noite Chiappa, acho que voce nao acompanhou corretamente a thread, o
que eu quero é:

1) Tendo uma data como parametro, saber em qual SEMANA do MES esta data
esta situada, sendo que a virada da semana tera de ser TODO DOMINGO.

Pegando o calendario que vc mandou, vou exemplificar:

01/02/2013 --> Semana 01 do mês - Sexta feira
02/02/2013 --> Semana 01 do mês - Sabado
03/02/2013 --> Semana 02 do mês - Domingo (como é domingo, faz a virada da
semana)
04/02/2013 --> Semana 02 do mês - Segunda feira
05/02/2013 --> Semana 02 do mês - Terça feira
06/02/2013 --> Semana 02 do mês - Quarta feira
07/02/2013 --> Semana 02 do mês - Quinta feira
08/02/2013 --> Semana 02 do mês - Sexta feira
09/02/2013 --> Semana 02 do mês - Sabado
10/02/2013 --> Semana 03 do mês - Domingo (como é domingo, faz a virada da
semana)
04/02/2013 --> Semana 03 do mês - Segunda feira
.....
17/02/2013 --> Semana 04 do mês - Domingo (como é domingo, faz a virada da
semana)

e assim por diante..........

Mas deixando bem claro, o que me interessa é a SEMANA




Emerson Sanches
Analista de Sistemas


Em 28 de fevereiro de 2013 18:49, J. Laurindo Chiappa <
jlchia...@yahoo.com.br> escreveu:

> **
>
>
> Antes de sequer começar a olhar esse código, PLZ nos explica o Objetivo e
> a LÓGICA que vc quer : se eu acompanhei corretamente a thread, o que vc
> quer é , para uma dado dia de um mês, saber qual a semana dentro do mês
> para que esse dia cai, COM a exigência de que a semana sempre começa numa
> segunda-feira, E que a semana acaba em 7 dias após essa segunda-feira... SE
> é isso, POR QUE vc não usou o algoritmo MUITO mais simples contido no link
> que passei em resposta anterior ??
> Eu IMAGINO que a sua lógica deve ser diferenciada, já que vc quer obter 4
> semanas por mês, sendo que (cfrme o link com o calendário que passei
> anteriormente, e cfrme o Milton já disse) se vc usar a lógica citada acima
> é CLARO que vc vai obter 5 semanas por mês, é o que acontece nas Folhinhas
> que a gente usa rotineiramente...
>
> []s
>
> Chiappa
>
> --- Em oracle_br@yahoogrupos.com.br, Emerson Sanches escreveu
>
> >
> > Segue a função, mas vou tentar explicar o que disse. Para que um mês no
> > ano, tenha exatamente 4 semanas, esse mês deve ser Fevereiro, não pode
> ser
> > bissexto, e deve começar em um domingo, que é o inicio da semana padrão,
> e
> > o inicio da semana no meu exemplo. Se o inicio do mês de fevereiro não
> for
> > domingo, este também terá 5 semanas. Consegui explicar?
> >
> > Obrigado pela ajuda..............e se alguém encontrar algum furo na
> > função, por favor, de um toque.....................obrigado de
> > novo...............
> >
> >
> > CREATE OR REPLACE FUNCTION SGI5_FNC_GERAL_SEMANA_DO_MES(DATA DATE)
> > RETURN NUMBER AS
> > V_SEM NUMBER;
> >
> > G_MES_DATA VARCHAR2(2);
> > G_ANO_DATA VARCHAR2(4);
> >
> > G_DIA_SEM_INI NUMBER;
> > G_MES_INI DATE;
> > G_PRI_DOM DATE;
> > G_SEG_DOM DATE;
> > G_TER_DOM DATE;
> > G_QUA_DOM DATE;
> > G_QUI_DOM DATE;
> > BEGIN
> > --pego o dia da semana em que inicia o mes
> > G_MES_DATA:= TO_CHAR(DATA,'MM');
> > G_ANO_DATA:= TO_CHAR(DATA,'YYYY');
> >
> > G_DIA_SEM_INI:=
> >
> TO_NUMBER(TO_CHAR(TO_DATE('01/'||G_MES_DATA||'/'||G_ANO_DATA,'DD/MM/YYYY'),'D'));
> > G_MES_INI := TO_DATE('01/'||G_MES_DATA||'/'||G_ANO_DATA,'DD/MM/YYYY');
> >
> > --subtraio do primeiro dia do mes a quantde necessaria pra chegar no
> > primeiro domingo subjacente
> > IF G_DIA_SEM_INI = 1 THEN
> > G_PRI_DOM:= G_MES_INI;
> > ELSIF G_DIA_SEM_INI = 2 THEN
> > G_PRI_DOM:= G_MES_INI -1;
> > ELSIF G_DIA_SEM_INI = 3 THEN
> > G_PRI_DOM:= G_MES_INI -2;
> > ELSIF G_DIA_SEM_INI = 4 THEN
> > G_PRI_DOM:= G_MES_INI - 3;
> > ELSIF G_DIA_SEM_INI = 5 THEN
> > G_PRI_DOM:= G_MES_INI - 4;
> > ELSIF G_DIA_SEM_INI = 6 THEN
> > G_PRI_DOM:= G_MES_INI - 5;
> > END IF;
> >
> > --registro as datas de todos os domingos do mes
> > G_SEG_DOM:= G_PRI_DOM + 7;
> > G_TER_DOM:= G_PRI_DOM + 14;
> > G_QUA_DOM:= G_PRI_DOM + 21;
> > G_QUI_DOM:= G_PRI_DOM + 28;
> >
> > --testo a data informada com as datas dos domingos do mes conseguindo
> > assim a semana do mes.
> > IF DATA < G_SEG_DOM THEN
> > V_SEM:= 1;
> > ELSIF DATA < G_TER_DOM THEN
> > V_SEM:= 2;
> > ELSIF DATA < G_QUA_DOM THEN
> > V_SEM:= 3;
> > ELSIF DATA < G_QUI_DOM THEN
> > V_SEM:= 4;
> > ELSE
> > V_SEM:= 5;
> > END IF;
> >
> > RETURN V_SEM;
> > END;
> >
> >
> > Emerson Sanches
> > Analista de Sistemas
> >
> >
> > Em 28 de fevereiro de 2013 16:18, J. Laurindo Chiappa <
> > jlchiappa@...> escreveu:
> >
> > > **
>
> > >
> > >
> > > Com certeza, eu também não entendi patavina , principalmente quando ele
> > > diz que "01 de fevereiro deve cair num Domingo" : baixando em
> > >
> http://office.microsoft.com/pt-br/templates/calendario-anual-de-2013-de-visualizacao-rapida-formato-segunda-a-domingo-TC103704176.aspxomodelo
>  com um calendário 2013 com a semana começando na segunda-feira não
>
> > > é nada disso ...
> > >
> > > Plz mostra aí a SUA função, colega, que algo não tá batendo....
> > >
> > > []s
> > >
> > > Chiappa
> > >
> > > --- Em oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr."
> > > escreveu
> > >
> > > >
> > > > Vc não falou especificamente qual é o problema... rs...
> > > >
> > > > Todos os meses do ano tem 5 semanas - OK, verdade.
> > > > E....??
> > > > Vc não falou como está retornando na TUA função, então não tem como a
> > > gente
> > > > te ajudar... rs...
> > > >
> > > >
> > > >
> > > > 2013/2/28 Emerson Sanches
> > > >
> > > > > **
> > > > >
> > > > >
> > > > > Pessoal, fiz a function pra retornar o dia da semana. Parece que
> esta
> > > > > funcionando corretamente, mas fazendo esses teste reparei que
> TODOS os
> > > > > meses do ano tem 5 semanas - nesta maneira de contar -, a unica
> exceção
> > > > > seria o mês de fevereiro, ainda assim ele precisa ter somente 28
> dias
> > > e o
> > > > > dia 01/02 deve cair em um domingo.
> > > > > Alguém já reparou nisso? Ou minha function esta
> > > louca...........rs.......
> > > > >
> > > > >
> > > > > Emerson Sanches
> > > > > Analista de Sistemas
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a