Verificare sovrapposizione date

domenica 18 giugno 2017 - 15.56

Geronimo79 Profilo | Junior Member

Buongiorno a tutti amici, ho un db sql server 2014 in cui inserisco i periodi di ferie che il personale chiede al datore di lavoro. In fase di inserimento devo verificare se la data che sto inserendo non va a sovrapporsi a un intervallo di date già presente nel db. Mi spiego meglio, se un dipendente mi chiede ferie dal 10 febbraio 2017 al 15 febbraio 2017 devo verificare nel db se per quel lavoratore e in quel range di date già sono registrati altri giorni di ferie, in modo tale da evitare il sovrapporsi di periodi. Se per esempio effettuo una ricerca dal 10 febbraio 2017 al 15 febbraio 2017 la query mi restituisce ciò che desidero, mentre se effettuo una ricerca dal 12 febbraio al 14 febbraio non mi viene restituito nulla. Di seguito il codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Il db è così composto:

CREATE TABLE [dbo].[Ferie] ( [Id] INT IDENTITY (1, 1) NOT NULL, [Codfisc] VARCHAR (16) NOT NULL, [Dal] DATE NOT NULL, [Al] DATE NOT NULL, [Tipo] VARCHAR (100) NOT NULL, CONSTRAINT [PK_Ferie] PRIMARY KEY CLUSTERED ([Id] ASC) );

Potreste aiutarmi nella creazione della query?
Grazie. Un saluto a tutti.



In merito alla problematica di sopra ho risolto e posto la soluzione. Se abbiamo i seguenti dati registrati in un db:
ID CODICE FISCALE DAL AL TIPO
2 GHJTU986JMNHJKMG 10/02/2017 15/02/2017 FERIE
8 GHJTU986JMNHJKMG 10/03/2017 20/03/2017 FERIE
9 GHJTU986JMNHJKMG 08/04/2017 13/04/2017 FERIE
10 GHJTU986JMNHJKMG 08/05/2017 12/05/2017 FERIE
11 GHJTU986JMNHJKMG 20/06/2017 25/06/2017 FERIE
12 GHJTU986JMNHJKMG 27/07/2017 28/07/2017 FERIE
13 GHJTU986JMNHJKMG 10/08/2017 11/08/2017 FERIE
14 GHJTU986JMNHJKMG 01/09/2017 15/09/2017 FERIE
15 GHJTU986JMNHJKMG 10/10/2017 15/10/2017 FERIE
16 GHJTU986JMNHJKMG 19/11/2017 22/11/2017 FERIE
19 GHJTU986JMNHJKMG 09/12/2017 11/01/2018 FERIE

inseriamo un nuovo periodo di ferie per un determinato dipendente e tramite il codice sottostante verificheremo se non va ad accavallarsi a un periodo già registrato:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Un saluto a tutti gli utenti.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5