Retornar Um dia da semana de todas as semanas

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
jerry-sc
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 45
Registrado em: Ter, 01 Nov 2011 1:24 pm

boa tarde pessoal,

Eu preciso montar um SQL de entregas, e preciso que para cada registro do SQL, tenha um dia de cada de semana do ano (4 meses pra frente).

Por exemplo: Produto A - entregas - 28/01 04/02 11/02 ... etc. Ou seja, é como se eu incrementasse 7 dias da data de hoje em diante, mas preciso que seja fixo, senão eu usaria o sysdate + 7, sysdate + 14

Alguém tem alguma noção de como retornar isso?
Avatar do usuário
tiago_pimenta
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 213
Registrado em: Qua, 29 Jun 2011 9:49 am
Localização: Barretos / SP

Bom dia...

Cara, sem pensar muito e sem saber também se tem alguma função para adicionar semana (Adicionar mês eu sei que tem add_months), eu faria um loop que o contador seria a semana e esse contador multiplicaria por 7, ou seja, a primeira semana seria 1 * 7, o que daria 7 e você adicionaria esse valor na data que você quer, depois seria 2 * 7 para a segunda semana, o que daria 14 dias, e assim sucessivamente até completar 4 meses ( 4 semanas por mês * 4 meses = 16)
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Olá, não entendi completo.
Tem como você dar exemplos melhores de dados que você possui e qual a saída desejada?
jerry-sc
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 45
Registrado em: Ter, 01 Nov 2011 1:24 pm

Vamos lá:

Eu preciso extrair as datas (dd/mm) de toda sexta-feira de cada semana.

Basicamente é isso. Eu gostaria de fazer isso sem ter que fazer com uma tabela de data entrega, que seria facil fazer a inclusão, não sei se tenho como fazer alguma função ou algo assim para que traga todas essas datas.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Olá,
a seguinte consulta recebe uma data como parâmetro, para saber qual o mês inicial , então retorna 4 meses, apenas as sextas feiras:

Selecionar tudo

SELECT *
  FROM (SELECT dia
              ,TO_CHAR(dia, 'iw') semana
              ,TO_CHAR(dia, 'd') dia_semana
              ,TO_CHAR(dia, 'mm') mês
          FROM (SELECT data_inicial + LEVEL - 1 dia
                  FROM (SELECT TRUNC(to_date(&p_ini, 'dd/mm/rrrr')) data_inicial
                          FROM dual)
                CONNECT BY LEVEL <= LAST_DAY(ADD_MONTHS(TRUNC(to_date(&p_ini, 'dd/mm/rrrr')),3 /* 3 meses para frente*/)) - TRUNC(to_date(&p_ini, 'dd/mm/rrrr')) + 1))

WHERE dia_semana = 6 /*sexta*/
order by dia
   ;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes