2015-04-02 72 views
1

獲取正確的行,我有表結構,這樣根據時間跨度

empid fromdate  todate  office_ID 
    1  2012-03-01  2014-04-2  1 
    1  2014-04-03  ----   2 
    2  2012-03-01  2014-04-2  2 
    3  2012-03-01  2014-04-2  1 

從這個表我想獲取在某個月 爲前。爲可205在那裏有員工1 爲我設計的查詢

select* from tbl_emp_office where (year(From_date)*100+ month(From_date)) < '201505' 

,但它是不是給正確答案爲所有用戶

如果員工目前在一些辦公室工作,然後TODATE將是未知因此它是空(這個邏輯是可以改變的,如果你提出一些更好)

回答

1

如果我理解正確的話,你想這樣:

select office_id 
    from employee_history 
    where year(fromdate) <= 2015 
     and month(fromdate) <= 5 
     and (
     (month(todate) >= 5 and year(todate) >= 2015) 
     or todate is null 
    ) 
     and empid = 1; 

該查詢使用mysql函數將日期分爲年和月,然後確保您正在查找的月份和年份等於或等於它們的startdate,並且它們的todate是null或發生在您正在尋找的月/年組合。

這也應該包括他們在部分月份的辦公室。

+0

感謝您解答其完美的工作! :-) – ddw147 2015-04-12 08:06:31