2009-10-09 10 views
-2

Possible en double:
Value should be 0 between the two dates?Date de comparaison entre deux dates?

SQL Server 2000

Tableau 1

ID Date Workedtime 

001 23-02-2009 08:00:00 
001 24-02-2009 15:00:00 
001 25-02-2009 17:00:00 
002 ... 

ainsi de suite ..,

Tableau2

ID FromDate ToDate 

001 24-02-2009 25-02-2009 
002 27-02-2009 03-03-2009 

...

Je veux comparer la date de table1 et ID avec Tableau2 ID FromDate, ToDate, signifie comparer avec Tableau1 Date de FromDate ToDate, si la date est livré entre fromdate et todate , le temps de travail devrait afficher absent.

Résultats escomptés

ID Date Workedtime 

001 23-02-2009 08:00:00 
001 24-02-2009 absent 
001 25-02-2009 absent 
002 ... 

Besoin d'aide Recherche

+2

Il a deux ou trois de ces X-) –

+3

Je pense que oui a écrit la moitié d'un système de feuilles de temps jusqu'à présent. – Andrew

Répondre

2

Cela devrait aider à ce que vous avez spécifié ci-dessus

DECLARE @Table1 TABLE(
     ID VARCHAR(10), 
     Date DATETIME, 
     Workedtime VARCHAR(10) 
) 

INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '23 Feb 2009', '08:00:00' 
INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '24 Feb 2009', '15:00:00' 
INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '25 Feb 2009', '17:00:00' 

DECLARE @Table2 TABLE(
     ID VARCHAR(10), 
     FromDate DATETIME, 
     ToDate DATETIME 
) 

INSERT INTO @Table2 (ID,FromDate,ToDate) SELECT '001', '24 Feb 2009', ' 25 Feb 2009' 

SELECT t1.ID, 
     t1.Date, 
     CASE WHEN t2.ID IS NULL THEN t1.Workedtime ELSE 'absent' END Workedtime 
FROM @Table1 t1 LEFT JOIN 
     @Table2 t2 ON t1.ID = t2.ID 
        AND t1.Date BETWEEN t2.FromDate AND t2.ToDate 
Questions connexes