Array
(
)

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

Hviana
   - 22 nov 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?


Marcus.magalhaes
   - 22 nov 2004

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 :

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

Att,


Hviana
   - 22 nov 2004


Citação:
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 :

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

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.


Marcus.magalhaes
   - 23 nov 2004

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,


Hviana
   - 23 nov 2004


Citação:
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: