Table de schémafiltrage lignes SQL
ID Activate_Date InActivate_Date
1 2009-12-18 10:25:19.470 2010-01-13 08:32:30.130
2 2009-12-18 10:25:19.470 2010-01-13 08:32:30.253
3 2009-12-18 10:25:19.470 2010-01-13 08:32:30.363
4 2009-12-18 10:25:19.470 2010-01-13 08:32:30.583
5 2009-12-18 10:25:19.470 2010-01-13 08:32:30.473
6 2010-01-13 14:46:53.880 2010-01-13 14:50:45.443
7 2010-01-13 08:32:30.600 2010-01-13 14:46:23.833
8 2010-01-13 08:32:30.600 2010-01-13 14:46:23.833
9 2010-01-13 08:32:30.600 2010-01-13 14:46:23.833
10 2010-01-13 08:32:30.600 2010-01-13 14:46:23.833
11 2010-01-13 14:46:53.880 2010-01-13 14:50:45.443
12 2010-01-13 14:44:56.397 2010-01-13 14:46:23.833
13 2010-01-13 12:42:59.113 2010-01-13 14:46:23.833
14 2010-01-13 12:42:59.113 2010-01-13 14:46:23.833
15 2010-01-13 12:42:59.113 2010-01-13 14:46:23.833
16 2010-01-13 12:42:59.113 2010-01-13 14:46:23.833
Paramètres d'entrée:
Declare @StartDate DateTime
Declare @EndDate DateTime
Declare @FirstShiftStartTime varchar(8)
Declare @FirstShiftEndTime varchar(8)
Set @StartDate = '1/01/2010'
Set @EndDate = '1/03/2010'
SET @FirstShiftStartTime = '15:00:00'
SET @FirstShiftEndTime = '17:00:00'
sortie:
sortie doivent être toutes les lignes de telle sorte que le filtre de temps doit être appliqué chaque jour sous forme de un changement. Donc, si nous utilisons ces paramètres puis l'eteint doit d'abord 5 lignes d'ID 1 à 5.
Ainsi, dans le filtre de sortie doit être appliqué:
1/01/2010 from 15:00:00 to 17:00:00
2/02/2010 from 15:00:00 to 17:00:00
3/03/2010 from 15:00:00 to 17:00:00
J'espère avoir fait mon auto clair:
J'ai essayé d'utiliser:
((DatePart(Table.Activate_Date) <= @StartDate AND DatePart(Table.INActivate_Date) > @StartDate) OR
(DatePart(Table.Activate_Date) >= @StartDate AND DatePart(Table.InActivate_Date) < @EndDate)
)
AND ((TimePart(Table.Activate_Date) >[email protected]) AND (TimePart(Table.INActivate_Date) < @FirstShiftEndTime))
Mais cela ne fonctionnera pas si la date Activer et Désactiver la date couvre plusieurs jours.
Une autre façon que je pourrais trouver est de créer une table de temp avec la boucle chaque jour et puis remplissez la table de temp avec des filtres et puis appliquez la méthode ci-dessus. J'espere qu'il devrait y avoir quelque chose de simple alors je pense.
Toute aide sera grandement appréciée.
MikeW merci pour la réponse, mais je dois couper le temps dans chaque jour. Si nous prenons l'exemple ci-dessus, l'entrée avec Activate_Date 1/02/2010 18:00:00 avec Inactive_Date 1/02/2010 20:00:00 ne doit pas être incluse. –