Consulta de registros nos finais de semana.
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
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
Curtidas 0
Respostas
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);
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
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);
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
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