Salve, ho un probelma ho una tabella che ha i seguenti campi



codice:
CREATE TABLE [dbo].[Storico](
  [Id_Storico] [int] IDENTITY(1,1) NOT NULL,
  [DataInizio] [date] NOT NULL,
  [DataFine] [date] NOT NULL,
  [Note] [text] NOT NULL,
  [utente] [nvarchar](50) NOT NULL,
  [causale] [int] NOT NULL,
  [abilitato] [bit] NOT NULL,
 CONSTRAINT [PK_Storico_1] PRIMARY KEY CLUSTERED 
(
  [Id_Storico] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Da questa tabella devo controllare se esiste un record in un range di date con una specifica causale
quindi io ho fatto la query così:


codice:
codice:
ALTER PROCEDURE [dbo].[ExistStorico_1](@data_in datetime,@data_fin datetime,@causale int)
AS
BEGIN
select Id_Storico
from Storico s
where @data_in >= s.DataInizio
 AND @data_fin <= s.DataFine
   AND s.causale=@causale
Il punto è che se io ho nella tabella questi valori
DataInizio=01/10/2009
DataFine=31/10/2009
Causale=pippo

e vado a inserire una data che va dal 01/09/2009 al 31/10/2009 e con la stessa causale mi deve dire che il periodo è già occupato.

Ho provato a mettere dei valori varchar come parametri nella stored procedure e poi fargli un cast di tipo ISO ma nulla.
Qualcuno ha un idea?
Sono un pò disperato a capire il perchè!


Grazie