2010-09-08 87 views
1

我們正在捕獲某個表中的考勤數據,主要是捕獲值(userId,startDate,endDate)。如果某人在某個日期申請假,則只填寫startDate,如果他申請一組日期,則會捕獲開始/結束日期。什麼查詢幫我看看,如果一個人正在休假的某一特定日期(比如9日,12日,15日,本月的)如何知道日期是否在特定時間段內

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 

查詢不應該包含數據庫的具體結構,但它需要運行 H2/MySQL的/ postgres的採用Hibernate ORM層

回答

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

我們使用休眠作爲ORM層,是所述聚結命令便攜式跨數據庫 – Sam 2010-09-08 16:13:23

+0

它的一個標準,在'MySQL','PostgreSQL','甲骨文工作'和'SQL Server'。不過,不知道'H2'。 – Quassnoi 2010-09-08 16:17:25

+0

它也適用於h2,謝謝 – Sam 2010-09-08 16:24:44

相關問題