我有这样的结构表
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将不知道因此它是null(如果你建议更好的话,这个逻辑可以改变)
答案 0 :(得分: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或者在你正在寻找的月/年组合。
这还应该包括他们在一个月内的办公室。