saber se periodo cadastrado contem ou esta contido na pesq..

22/11/2004

pessoal preciso dar um select que mim diga se o PERIODO QUE ESTOU PESQUISANDO VIA PARAMETRO conten ou esta contido em um PERIODO JÁ CADASTRADO

p isso tenho o seguinte SQl...

SELECT *
FROM PERIODO
WHERE (:DATAINICIAL BETWEEN PERIODO.DATAINICIAL AND PERIODO.DATAFINAL) OR
(:DATAFINAL BETWEEN PERIODO.DATAINICIAL AND PERIODO.DATAFINAL)

soh q esse SQl esta furado pois

PERIODO CADASTRADO ==> 01-11-2004 ATÉ 30-11-2004
PERIODO QUE ESTOU CONSULTANDO ==> 01-01-2004 ATÉ 30-12-2004

o comando SQL n traz nenhum registro, como se n existisse periodo cadastrado nesse intervalo de data (01-01-2004 ATÉ 30-12-2004)


como fasso uma consulta p saber se o periodo q estou consultando contem ou esta contido em um periodo jah cadastrado?


Hviana

Respostas

22/11/2004

Marcus.magalhaes

Boa tarde.

Não sei se entendi direito sua dúvida, mas seu select está certo.

Usei este script como teste, se a idéia está errada, me fale :

[color=red:72817bb2d9]Create Table TESTE
(
col1intidentity(1, 1)NOT NULL,
col2VarChar(10)NULL,
dtiniDateTimeNULL,
dtfimDateTimeNULL
)
GO

Insert Into TESTE (col2, dtini, dtfim) values (´teste 1´, ´jan 1 2004´, ´jan 31 2004´)
Insert Into TESTE (col2, dtini, dtfim) values (´teste 2´, ´feb 1 2004´, ´feb 28 2004´)
Insert Into TESTE (col2, dtini, dtfim) values (´teste 3´, ´mar 1 2004´, ´mar 31 2004´)
Insert Into TESTE (col2, dtini, dtfim) values (´teste 4´, ´apr 1 2004´, ´apr 30 2004´)
Insert Into TESTE (col2, dtini, dtfim) values (´teste 5´, ´may 1 2004´, ´may 31 2004´)
Insert Into TESTE (col2, dtini, dtfim) values (´teste 6´, ´jun 1 2004´, ´jun 30 2004´)
Insert Into TESTE (col2, dtini, dtfim) values (´teste 7´, ´jul 1 2004´, ´jul 31 2004´)
Insert Into TESTE (col2, dtini, dtfim) values (´teste 11´, ´nov 22 2004´, ´nov 23 2004´)
GO

Declare @var_dtinidatetime,
@var_dtfimdatetime

Set @var_dtini = ´jan 1 2004´
Set @var_dtfim = ´dec 30 2004´

Select ´está contido´, *
From teste
Where (@var_dtini between dtini and dtfim)
Or (@var_dtfim between dtini and dtfim)

Select ´contém´, *
From teste
Where (dtini between @var_dtini and @var_dtfim)
Or (dtfim between @var_dtini and @var_dtfim)
GO

Drop Table TESTE
GO[/color:72817bb2d9]

Att,


Responder Citar

22/11/2004

Hviana

Boa tarde. Não sei se entendi direito sua dúvida, mas seu select está certo. Usei este script como teste, se a idéia está errada, me fale : [color=red:d8ad275d2b]Create Table TESTE ( col1intidentity(1, 1)NOT NULL, col2VarChar(10)NULL, dtiniDateTimeNULL, dtfimDateTimeNULL ) GO Insert Into TESTE (col2, dtini, dtfim) values (´teste 1´, ´jan 1 2004´, ´jan 31 2004´) Insert Into TESTE (col2, dtini, dtfim) values (´teste 2´, ´feb 1 2004´, ´feb 28 2004´) Insert Into TESTE (col2, dtini, dtfim) values (´teste 3´, ´mar 1 2004´, ´mar 31 2004´) Insert Into TESTE (col2, dtini, dtfim) values (´teste 4´, ´apr 1 2004´, ´apr 30 2004´) Insert Into TESTE (col2, dtini, dtfim) values (´teste 5´, ´may 1 2004´, ´may 31 2004´) Insert Into TESTE (col2, dtini, dtfim) values (´teste 6´, ´jun 1 2004´, ´jun 30 2004´) Insert Into TESTE (col2, dtini, dtfim) values (´teste 7´, ´jul 1 2004´, ´jul 31 2004´) Insert Into TESTE (col2, dtini, dtfim) values (´teste 11´, ´nov 22 2004´, ´nov 23 2004´) GO Declare @var_dtinidatetime, @var_dtfimdatetime Set @var_dtini = ´jan 1 2004´ Set @var_dtfim = ´dec 30 2004´ Select ´está contido´, * From teste Where (@var_dtini between dtini and dtfim) Or (@var_dtfim between dtini and dtfim) Select ´contém´, * From teste Where (dtini between @var_dtini and @var_dtfim) Or (dtfim between @var_dtini and @var_dtfim) GO Drop Table TESTE GO[/color:d8ad275d2b] Att,



faça uma pesquisa que pegue todos os periodos compreendidos entre 01-01-2004 a 30-12-2004 o Select n retornara todos os periodos...qndo era p retornar pois o q estou querendo s todos os periodos cadastrados entre jan e dez.


Responder Citar

23/11/2004

Marcus.magalhaes

Bom dia.

Mostra sim, é o Select com a palavra contém, ali mostra todos os períodos cadastrados no intervalo de 01/01/2004 à 30/12/2004.

Att,


Responder Citar

23/11/2004

Hviana

Bom dia. Mostra sim, é o Select com a palavra contém, ali mostra todos os períodos cadastrados no intervalo de 01/01/2004 à 30/12/2004. Att,


foi mau cara nem prestei atenção!!!!! :oops:


Responder Citar