Página 1 de 1
Duvida em select com feriádos e fins de semana
Enviado: Ter, 08 Abr 2008 9:13 am
por carlos12
Bom dia pessoal.
Tenho uma duvida que acho ser braba preciso fazer um select que traga os domingos e feriados do ano de 2007.
tipo quero pegar todos os registro que aconteceram nos domingos e feriados de 2007 no oracle tenho o campo data que tem as datas normais
pessoal preciso muito dessa ajuda.
Enviado: Ter, 08 Abr 2008 9:15 am
por Trevisolli
Brother,
Bom dia.
Pra pegar os sábados e domingos, tranquilo:
Daí, verifique se é sábado ou domingo neste retorno.
Quanto aos feriados, daí você tem que ter um cadastro em teu sistema, ok?
qualquer coisa, manda ai.
Enviado: Ter, 08 Abr 2008 10:36 am
por carlos12
Trevisolli
vamos por partes. primeiro o domingo
como posso em um select diferenciar tipo só trazer os domingos tipo
Selecionar tudo
SELECT TO_CHAR(u.dtinicio,'DY') FROM usuario u
where u.dtinicio like 'DOM';
tentei assim mas num deu não tem como fazer??
Enviado: Ter, 08 Abr 2008 10:43 am
por Trevisolli
Brother, vamos lá!
Pra pegar o sábado ou domingo (atente para a configuração do banco, no caso, aqui, em Inglês, portanto, Sábado = Sat (saturdary) e Domingo = Sun (Sunday), beleza?).
Selecionar tudo
DECLARE
vdia VARCHAR2(03);
BEGIN
SELECT TO_CHAR (TO_DATE ('13/04/2008', 'dd/mm/rrrr'), 'DY')
INTO vdia
FROM DUAL;
IF vdia IN ('SAT','SUN')
THEN
raise_application_error(-20001, 'Data não permitida: '||vdia||' pois não é um dia útil.');
ELSE
dbms_output.put_line('Dia válido. '||vdia);
END IF;
END;
Para fazer os testes ai, troque a data de 13/04/2008, que é um Domingo, pela data que o usuário lhe fornecer, beleza?
Quanto aos feriados, você deve ter um cadastro no teu sistema, portanto, só aplicar a regra acima, quando for Sábado, Domingo ou um Feriado da tua tabela, beleza?
qualquer coisa, manda ai.
Enviado: Ter, 08 Abr 2008 10:51 am
por carlos12
Rapaz que legal mas olha só eu preciso disso pra um select não pra inserir nada em bd tipo o usuário entraria com um rang de datas tipo
ai o select só traz datas relacionadas ao domingo, minhas datas estão em português tipo quando eu fiz:
ele retornou
SAB
DOM
QUI
e assim por diante
Enviado: Ter, 08 Abr 2008 11:01 am
por Trevisolli
Brother,
Pelo que eu entendi, o usuário vai digitar um Range de Datas e, você deseja mostrar à ele somente dias Úteis, é isso?
Enviado: Ter, 08 Abr 2008 11:11 am
por carlos12
isso o usuario digita a data Ex.01/01/2007 à 30/04/2007 certo
ai esse select só retorna os Domigos só as datas referente ao domingo
Enviado: Ter, 08 Abr 2008 11:36 am
por Trevisolli
Ai brother, faça uns testes:
Em
PL/SQL:
Selecionar tudo
--Ex.01/01/2007 à 30/04/2007
DECLARE
vdata_ini DATE := TO_DATE('01/01/2007','dd/mm/rrrr');
vdata_fim DATE := TO_DATE('30/04/2007','dd/mm/rrrr');
vdias PLS_INTEGER := 0;
BEGIN
vdias := (vdata_fim - vdata_ini);
FOR x IN 1..vdias
LOOP
IF TO_CHAR(vdata_ini, 'DY') = 'SUN' -- No teu caso, 'DOM'
THEN
-- Faça algo aqui.
dbms_output.put_line('Imprime a data na tela (Domingo): ' || TO_CHAR(vdata_ini, 'dd/mm/rrrr'));
END IF;
vdata_ini := vdata_ini + 1;
END LOOP;
END;
Ou, com
SQL também é possível:
Selecionar tudo
SELECT *
FROM sua_tabela
WHERE to_char(dta_atualizacao,'DY') = 'SUN' -- No teu caso, DOM
AND dta_atualizacao BETWEEN TO_DATE('01/01/2007','dd/mm/rrrr')
AND TO_DATE('30/04/2007','dd/mm/rrrr');
qualquer coisa, manda ai.
Enviado: Ter, 08 Abr 2008 11:43 am
por carlos12
Trevisolli
Cara peço desculpas mas sou meio lerdo mesmo vamos por parte onde eu coloco minha tabela nesse trem? rs
tabela = usuario
campo = dtinicio
e nessa parte você colocou
THEN
-- Faça algo aqui.
o que é pra fazer?
Cara fica puto não mas é que eu estou precisando mesmo...
Forte abraço
Enviado: Ter, 08 Abr 2008 11:46 am
por Trevisolli
Brother,
Faça com o
SQL que adicionei no código anterior.
Tem as duas formas, mas, a de SQL atende melhor tua necessidade, que seria dar um SELECT em uma tabela, retornando apenas os domingos, beleza?
Selecionar tudo
SELECT *
FROM sua_tabela
WHERE to_char(dta_atualizacao,'DY') = 'SUN' -- No teu caso, DOM
AND dta_atualizacao BETWEEN TO_DATE('01/01/2007','dd/mm/rrrr')
AND TO_DATE('30/04/2007','dd/mm/rrrr');
qualquer coisa, manda ai, sem crise.
Enviado: Ter, 08 Abr 2008 11:48 am
por carlos12
Trevisolli
hhuhuhauuahsuahuaa CADE DEU CERTINHO VÉI
fiz o SQL que tava embaixo e eu na pressa nem vi kkkk cara está corretissimo te devo essa mano bigadão.
Deus te page!
Enviado: Ter, 08 Abr 2008 11:48 am
por carlos12
Trevisolli
hhuhuhauuahsuahuaa CADE DEU CERTINHO VÉI
fiz o SQL que tava embaixo e eu na pressa nem vi kkkk cara está corretissimo te devo essa mano bigadão.
Enviado: Ter, 08 Abr 2008 11:50 am
por carlos12
Trevisolli
hhuhuhauuahsuahuaa CADE DEU CERTINHO VÉI
fiz o SQL que tava embaixo e eu na pressa nem vi kkkk cara está corretissimo te devo essa mano bigadão.
Enviado: Ter, 08 Abr 2008 11:50 am
por Trevisolli
beleza brother, q bom!
Precisando, conte com a gente.
Enviado: Ter, 22 Abr 2008 1:39 pm
por Toad