【发布时间】:2016-03-25 07:50:05
【问题描述】:
我想要申请休假表格“2016-03-16”日期到“2016-03-25”日期的员工记录。但是当我写我的查询时,我会在 where 条件中提到 between 子句,就像我提到日期一样
select * from leave_form
where from_date and to_date between '2016-03-16' and '2016-03-25'
and status='yes' and emp_code='K0209';
它会显示像
这样的结果type, emp_code, rm_id, leave_bal, from_date, leave_from, to_date, leave_to, number, leave_for, status, applied_date, pendays, personal,
K0209, K0093, 10, 2016-03-16, full day, 2016-03-25, full day, 10, personal, yes, 2016-03-15,
还有什么时候我会像
这样写我的查询 select * from leave_form
where from_date and to_date between '2016-03-17' and '2016-03-17'
and status='yes' and emp_code='K0209';
它必须向我显示相同的结果,表明您已经申请了这个日期。 即它将显示相同的结果:
type, emp_code, rm_id, leave_bal, from_date, leave_from, to_date, leave_to, number, leave_for, status, applied_date, pendays
personal, K0209, K0093, 10, 2016-03-16, full day, 2016-03-25, full day, 10, personal, yes, 2016-03-15,
【问题讨论】:
-
我不确定您的这部分请求是否符合您的要求:
where from_date and to_date between。我不知道这里不同运算符的优先级,但我很确定它确实会检查两列是否包含查询中稍后指定的日期之间的日期。 -
不清楚你需要什么......你错误地使用了 between 子句,因为有两列 from_date 和 to_date....所以你需要对两个字段使用 2 between 子句,否则你需要遵循正如@Harry 在他的回答中所建议的那样。
标签: mysql subquery between in-subquery