Salve, ho un probelma ho una tabella che ha i seguenti campi
Da questa tabella devo controllare se esiste un record in un range di date con una specifica causalecodice: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]
quindi io ho fatto la query così:
codice:
Il punto è che se io ho nella tabella questi valoricodice: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
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

Rispondi quotando