Consulta de registros nos finais de semana.

Oracle

23/03/2012

Caros,

Em uma tabela tenho uma coluna chamada DataCadastro, eu preciso realizar um select em todos os registros que foram cadastrados somente nos finais de semana, ou seja Sabado e domingo a partir de de dezembro de 2011 até hoje.

Sabem como eu poderia fazer esta query?
No SQL, utilizo o DATEPART, mas percebi que no ORACLE não tem. Vi algo sobre TO_CHAR

Podem me ajudar?
Abraços
Rodrigo Odasaki

Rodrigo Odasaki

Curtidas 0

Respostas

Rodrigo Odasaki

Rodrigo Odasaki

23/03/2012

Consegui resolver.

SELECT ChamadoId, Data
FROM NOME_TABELA
WHERE to_char(data,DY) IN (SAT,SUN)
AND data BETWEEN TO_DATE(01/10/2011,dd/mm/yyyy)
AND TO_DATE(23/03/2012,dd/mm/yyyy);
GOSTEI 0
Alexsandro Bandeira

Alexsandro Bandeira

23/03/2012

Não seria isso:

select t.dado from tabela t
where ( to_char(to_date(t.data),dd) in (06,07) )
and t.data between to_date(t.data) and to_date(t.data);
GOSTEI 0
Deivison Melo

Deivison Melo

23/03/2012


Você pode utilizar:
------------------------------------------------------------------------------------------------------------
select case when to_char(sysdate, d) in (1,7) then
FIM DE SEMANA
else DIA UTIL
end
from dual
------------------------------------------------------------------------------------------------------------
ou

------------------------------------------------------------------------------------------------------------
select Decode(to_char(sysdate, d),1,Domingo,to_char(sysdate, d),7,DIA UTIL, FIM DE SEMANA) Dia
from dual
------------------------------------------------------------------------------------------------------------
ou
------------------------------------------------------------------------------------------------------------

select Decode(to_char(sysdate, d),1,Domingo,2,Segunda,3,Terça,4,Quarta,5,Quinta,6,Sexta,7,
Sábado) Dias
from dual
------------------------------------------------------------------------------------------------------------
ou

usar essa função que fiz para pegar os último dia útil do mês baseado na data passada como parâmetros para
a função:
------------------------------------------------------------------------------------------------------------

create or replace function UltimoDiaUtilMes(dData date default sysdate) return Date is
cursor cData is
select to_char(Last_Day(dData),D) Data
from dual;

vDia varchar2(10):= null;
dDia date := null;
begin

open cData;
fetch cData into vDia;
close cData;

if vDia = 7 then
dDia:= dData - 1; /*se for sábado subtrair um dia (ficando a sexta como último dia útil do mês) */
elsif vDia = 1 then
dDia:= dData - 2; /*se for domingo subtrair um dia (ficando a sexta como último dia útil do mês)*/
else
dDia:= dData;
end if;

return dDia;
end;

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

Espero ter ajudado!

Forte abraço!!!


GOSTEI 0
POSTAR