Apenas dias específicos do ano
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Sáb, 05 Out 2013 11:45 pm
Sou iniciante na area de pl/sql queria saber como crio um bloco anônimo que exiba durante 365 dias (1 ano) apenas as datas que caem no sábado e domingo, após a entrada de uma data. Após a solicitação da entrada da data, exibir sequencialmente a data e o dia da semana que representa essa data. Eu sei que consigo fazer apenas com um loop mas não estou acertando, os valores teriam que esta em ordem de data
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Rapaz,
fiz um sql que gera as datas a partir da data desejada até o ultimo dia do ano da data desejada.
Este bloco é montado dinamicamente e pode selecionar apenas os dias do fim de semana (1-Domingo e 7-Sábado).
Acredito que ajudará:
fiz um sql que gera as datas a partir da data desejada até o ultimo dia do ano da data desejada.
Este bloco é montado dinamicamente e pode selecionar apenas os dias do fim de semana (1-Domingo e 7-Sábado).
Acredito que ajudará:
SELECT *
FROM (SELECT dia
, TO_CHAR(dia, 'd') dia_semana
FROM (SELECT data_inicial + LEVEL - 1 dia
FROM (SELECT TO_DATE(&MYDATE, 'DD/MM/RRRR') data_inicial
FROM dual)
CONNECT BY LEVEL <= (
TO_DATE('31/12/' || (extract(YEAR FROM TO_DATE(&MYDATE, 'DD/MM/RRRR'))) , 'DD/MM/RRRR') -
TO_DATE(&MYDATE, 'DD/MM/RRRR')
) + 1))
WHERE 1 = 1
AND dia_semana IN (1,7)
;
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Sáb, 05 Out 2013 11:45 pm
Obrigado pela ajuda, consiguir desenvolver esse loop que exibe o que preciso.
Preciso evoluir esse programa para exibir os feriados e sua descrição. eu criei uma tabela feriado, com data e descrição mas não consigo trazer essas informações, alguma idéia de trazer essas informações.
DECLARE
v_DATA DATE := '&Digite_Data' ;
v_DATA_FIM DATE;
BEGIN
v_DATA_FIM := ADD_MONTHS(V_DATA, 12);
FOR I IN 1..365 LOOP
IF (TO_CHAR(v_DATA, 'D') IN (1,7) ) THEN
DBMS_OUTPUT.PUT_LINE(v_DATA ||' - ' || TO_CHAR(V_DATA,'DAY'));
END IF;
v_DATA := v_DATA + 1;
END LOOP;
END;
create table feriado
( dt date,
descricao varchar2(50)
);
insert into feriado values ( to_date('01/01/2011','dd/mm/yyyy'), 'Confraternização Universal');
insert into feriado values ( to_date('25/01/2011','dd/mm/yyyy'), 'Aniversário de São Paulo' );
insert into feriado values ( to_date('08/03/2011','dd/mm/yyyy'), 'Carnaval');
insert into feriado values ( to_date('21/04/2011','dd/mm/yyyy'), 'Tiradentes');
insert into feriado values ( to_date('22/04/2011','dd/mm/yyyy'), 'Sexta-feira da Paixão');
insert into feriado values ( to_date('01/05/2011','dd/mm/yyyy'), 'Dia do Trabalho');
insert into feriado values ( to_date('23/06/2011','dd/mm/yyyy'), 'Corpus Christi');
insert into feriado values ( to_date('07/09/2011','dd/mm/yyyy'), 'Independência do Brasil');
insert into feriado values ( to_date('12/10/2011','dd/mm/yyyy'), 'Nossa Senhora Aparecida');
insert into feriado values ( to_date('02/11/2011','dd/mm/yyyy'), 'Finados');
insert into feriado values ( to_date('25/12/2011','dd/mm/yyyy'), 'Natal');
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Opa,
tinha entendido que contaria a partir de determinada data até o fim do ano.
Sua procedure, dentre alguns problemas, tem um problema de cara: anos bissextos.
Você está "programando" em plsql sem usar sql. Para fazer o que você deseja você terá que consultar sua tabela de feriados e verificar se existe aquela data.
Você poderia usar a estrutura que coloquei no inicio fazendo um outter join com sua tabela de feriados. Se existir então você exibe.
Mas tb você pode dentro do seu loop verificar na tabela de feriados se existe aquela data. se existir, então exibe.
tinha entendido que contaria a partir de determinada data até o fim do ano.
Sua procedure, dentre alguns problemas, tem um problema de cara: anos bissextos.
Você está "programando" em plsql sem usar sql. Para fazer o que você deseja você terá que consultar sua tabela de feriados e verificar se existe aquela data.
Você poderia usar a estrutura que coloquei no inicio fazendo um outter join com sua tabela de feriados. Se existir então você exibe.
Mas tb você pode dentro do seu loop verificar na tabela de feriados se existe aquela data. se existir, então exibe.
-
- Rank: DBA Sênior
- Mensagens: 317
- Registrado em: Seg, 16 Nov 2009 4:50 pm
- Localização: São Paulo - SP
Caro Eric.
Essas dúvidas sobre funções ou como trabalhar com datas são muito comum e recorrentes aqui no fórum. Eu mesmo, em meados de 2009 abriu um tópico sobre este assunto também. Por isso, efetuei uma busca avançada com algumas variações dos termos relacionado ao assunto e localizei os seguintes tópicos abertos com muitas dicas que talvez lhe possa ser útil. Segue:
http://glufke.net/oracle/viewtopic.php? ... ado#p35030
http://glufke.net/oracle/viewtopic.php? ... dos#p35033
http://glufke.net/oracle/viewtopic.php? ... dos#p29050
http://glufke.net/oracle/viewtopic.php? ... dos#p28046
http://glufke.net/oracle/viewtopic.php? ... dos#p25019
http://glufke.net/oracle/viewtopic.php? ... dos#p22831
http://glufke.net/oracle/viewtopic.php? ... ados#p2002
http://glufke.net/oracle/viewtopic.php? ... eis#p25824
http://glufke.net/oracle/viewtopic.php? ... eis#p25365
http://glufke.net/oracle/viewtopic.php? ... eis#p17428
http://glufke.net/oracle/viewtopic.php? ... teis#p6773
http://glufke.net/oracle/viewtopic.php? ... teis#p4469
http://glufke.net/oracle/viewtopic.php? ... til#p25019
http://glufke.net/oracle/viewtopic.php? ... til#p10060
Espero que tenha ajudado.
Qualquer coisa posta ai.
Abç.,
Essas dúvidas sobre funções ou como trabalhar com datas são muito comum e recorrentes aqui no fórum. Eu mesmo, em meados de 2009 abriu um tópico sobre este assunto também. Por isso, efetuei uma busca avançada com algumas variações dos termos relacionado ao assunto e localizei os seguintes tópicos abertos com muitas dicas que talvez lhe possa ser útil. Segue:
http://glufke.net/oracle/viewtopic.php? ... ado#p35030
http://glufke.net/oracle/viewtopic.php? ... dos#p35033
http://glufke.net/oracle/viewtopic.php? ... dos#p29050
http://glufke.net/oracle/viewtopic.php? ... dos#p28046
http://glufke.net/oracle/viewtopic.php? ... dos#p25019
http://glufke.net/oracle/viewtopic.php? ... dos#p22831
http://glufke.net/oracle/viewtopic.php? ... ados#p2002
http://glufke.net/oracle/viewtopic.php? ... eis#p25824
http://glufke.net/oracle/viewtopic.php? ... eis#p25365
http://glufke.net/oracle/viewtopic.php? ... eis#p17428
http://glufke.net/oracle/viewtopic.php? ... teis#p6773
http://glufke.net/oracle/viewtopic.php? ... teis#p4469
http://glufke.net/oracle/viewtopic.php? ... til#p25019
http://glufke.net/oracle/viewtopic.php? ... til#p10060
Espero que tenha ajudado.
Qualquer coisa posta ai.
Abç.,
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes