我有一个名为' helper_leaves
'的mysql表。用户已在其中输入了未来2个月的休假日期。
我想在' user_id
&#中为不的特定helper_leaves
获得 2个即将到来的工作日期 39;表格也应该当前日期旁边。
**id | user_id | leave_date**
1 | 1 | 2016-07-07
2 | 1 | 2016-07-09
3 | 1 | 2016-07-15
4 | 1 | 2016-08-03
我希望从现在开始编写一个查询以获得user_id = 1
的下一个2个工作日期。
请注意,此表仅包含请假日期。但我想获得接下来的2个可用日期。
对于给出的样本数据,我预计将在接下来的2个工作日期 2016-07-14 和 2016-07-16 ,因为今天 2016年7月13日
注意:此表中没有的所有日期都被视为工作日期。
请帮助!!!!
答案 0 :(得分:2)
您可以尝试使用以下查询吗? 在那里,我刚刚生成了接下来的60个日期,并将left_date排除在限制为2的日期之外。
SELECT CURDATE() + INTERVAL a + b DAY dte
FROM
(SELECT 0 a UNION SELECT 1 a UNION SELECT 2 UNION SELECT 3
UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7
UNION SELECT 8 UNION SELECT 9 ) d,
(SELECT 0 b UNION SELECT 10 UNION SELECT 20
UNION SELECT 30 UNION SELECT 40) m
WHERE CURDATE() + INTERVAL a + b DAY < DATE_ADD(CURDATE(),INTERVAL 60 DAY) and dte not in ( select leave_date from helper_leaves where user_id = 1)
ORDER BY a + b limit 2
答案 1 :(得分:0)
为此您可以使用间隔
对于Ex:
SELECT DATE_ADD(leave_date, INTERVAL 1 DAY) AS workingDay;