Fórum SELECT EM DATAS #257885
10/11/2004
0
Tenho os seguintes dados em uma tabela:
USUARIODT_INICIODT_FInal
122/11/200427/11/2004
122/11/200423/11/2004
122/11/200425/11/2004
Preciso fazer uma procedure ou outro objeto que controle na minha aplicação o seguinte:
Um determinado usuário não pode ter mais de um acesso no mesmo período de datas, ou seja, se já houver um acesso na data de 22/11/2004 a 25/11/2004, não posso deixar incluir outro. Considerando os dados que estão no meu banco, com o select que criei:
SELECT count(*)
FROM TABELA V
WHERE V.usu_chave = ´1´ AND
V.dt_inicio >= TO_DATE(´22/11/2004´, ´DD/MM/YYYY´) AND
V.dt_final <= TO_DATE(´25/11/2004´, ´DD/MM/YYYY´)
consigo pegar as linhas:
122/11/200423/11/2004
122/11/200425/11/2004
mas não a primeira linha: 122/11/200427/11/2004
Como posso fazer para controlar isso? Na verdade, eu teria que ter como resultado as três linhas, pois existem acessos que começam dia 22/11/2004, mas o que está furando é que no primeiro a data_final é 27/11/2004 e é maior que a condição que coloquei.
Obrigada,
USUARIODT_INICIODT_FInal
122/11/200427/11/2004
122/11/200423/11/2004
122/11/200425/11/2004
Preciso fazer uma procedure ou outro objeto que controle na minha aplicação o seguinte:
Um determinado usuário não pode ter mais de um acesso no mesmo período de datas, ou seja, se já houver um acesso na data de 22/11/2004 a 25/11/2004, não posso deixar incluir outro. Considerando os dados que estão no meu banco, com o select que criei:
SELECT count(*)
FROM TABELA V
WHERE V.usu_chave = ´1´ AND
V.dt_inicio >= TO_DATE(´22/11/2004´, ´DD/MM/YYYY´) AND
V.dt_final <= TO_DATE(´25/11/2004´, ´DD/MM/YYYY´)
consigo pegar as linhas:
122/11/200423/11/2004
122/11/200425/11/2004
mas não a primeira linha: 122/11/200427/11/2004
Como posso fazer para controlar isso? Na verdade, eu teria que ter como resultado as três linhas, pois existem acessos que começam dia 22/11/2004, mas o que está furando é que no primeiro a data_final é 27/11/2004 e é maior que a condição que coloquei.
Obrigada,
Barbara.michele
Curtir tópico
+ 0
Responder
Posts
10/11/2004
Motta
em oracle seria algo assim (escrito no bloco de notas sem teste)
create or replace funtion valida (p_u in varchar2,p_i in date,p_f in date)
return number /*0-ok 1-nao ok*/ is
vn number;
begin
select sign(Count(*)) /*sign retorna 1 se positvo 0 se 0 -1 se neg.*/
into vn
from tabela
where usuario = p_u
(p_i between data_i and data_f or
p_f between data_i and data_f)
return vn;
end;
create or replace funtion valida (p_u in varchar2,p_i in date,p_f in date)
return number /*0-ok 1-nao ok*/ is
vn number;
begin
select sign(Count(*)) /*sign retorna 1 se positvo 0 se 0 -1 se neg.*/
into vn
from tabela
where usuario = p_u
(p_i between data_i and data_f or
p_f between data_i and data_f)
return vn;
end;
Responder
Gostei + 0
10/11/2004
Gandalf.nho
[b:ea63214103][color=red:ea63214103]Notificação de Infração às Regras de Conduta :[/color:ea63214103][/b:ea63214103]
Título em maiúsculas
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Título em maiúsculas
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)