2010-09-08 15 views
1

Nous capturons des données de présence dans une table donnée en capturant principalement les valeurs (userId, startDate, endDate). Si une personne demande un congé à une certaine date, alors seulement startDate est rempli et s'il demande un ensemble de dates, les dates de début/fin sont saisies. Qu'est-ce que la requête va me aider à trouver si une personne prend un congé à une certaine date (disons le 9, 12, 15 de ce mois)Comment savoir si une date est comprise dans la période définie

user1, 9/8/2010 
user2, 9/9/2010, 9/10/2010 
user3, 9/14/2010 
user4, 9/15/2010 
user5, 9/9/2010, 9/20/2010 

users taking leaving on 9th would be user2, user5 
users taking leaving on 12th would be user5 
users taking leaving on 15th would be user4, user5 

La requête ne doit pas contenir des constructions spécifiques de bases de données, il doit fonctionner sur h2/mysql/postgres en utilisant hiberner comme la couche ORM

Répondre

7
SELECT userId 
FROM mytable 
WHERE '2010-09-09' BETWEEN startDate AND COALESCE(endDate, startDate) 
+0

nous utilisons hiberner comme la couche ORM, est la commande soudent bases de données portables à travers – Sam

+0

Son standard et fonctionne 'mysql',' PostgreSQL', 'Oracle 'et' SQL Server'. Je ne sais pas sur 'H2', cependant. – Quassnoi

+0

ça marche aussi sur h2, merci – Sam

Questions connexes