Fórum Consulta de registros nos finais de semana. #414490
23/03/2012
0
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
Curtir tópico
+ 0Posts
23/03/2012
Rodrigo Odasaki
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
05/06/2012
Alexsandro Bandeira
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
05/06/2012
Deivison Melo
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
Clique aqui para fazer login e interagir na Comunidade :)