Bonjour,
j'aimerais avoir votre avis sur la requête suivante, particulièrement si elle permet de réaliser ce que je veux (faire un jeu d'essai sur les dates ce sera très long).
J'ai une table T_EMPLOYE_EMP (EMP_ID, EMP_DATE_DEB_T, EMP_DATE_FIN_T) avec EMP_DATE_FIN_T nullable qui permet de recenser des périodes de travail de salariés (par exemple un salarié travaille sur un projet du 10/5 au 20/6).
En ayant deux dates en entrées (généralement les dates de début de mois @debMois et de fin de mois @finMois mais pas toujours...), j'aimerais avoir tous les employés qui ont travaillé sur cette période.
Y'a-t-il des fonctions pour travailler sur les intervalles de date ? Y'a-t-il moyen de se passer de l'union ?
Ma requête :
Merci par avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT EMP_ID FROM T_EMPLOYE_EMP WHERE EMP_DATE_DEB_T < @dateFinMois AND EMP_DATE_FIN_T IS NULL UNION SELECT EMP_ID FROM T_EMPLOYE_EMP WHERE @dateDebutMois BETWEEN EMP_DATE_DEB_T AND EMP_DATE_FIN_T OR @dateFinMois BETWEEN EMP_DATE_DEB_T AND EMP_DATE_FIN_T OR (@dateDebutMois < EMP_DATE_DEB_T AND @dateFinMois > EMP_DATE_FIN_T)
@+
Partager