Php MySql-获取满足条件的下一个日期

Php MySql-获取满足条件的下一个日期,php,mysql,sql,Php,Mysql,Sql,我有一个名为“helper_leaves”的mysql表,其中用户输入了未来2个月的休假日期 我想得到一个特定用户id的两个即将到来的工作日期,它们不在“helper_leaves”表中,也应该在当前日期的旁边 我想写一个查询,从现在开始获取用户_id=1的下两个工作日期。 请注意,此表仅包含休假日期。但我想知道下两个上市日期 对于给出的样本数据,我预计2016-07-14和2016-07-16将作为下两个工作日期,因为今天是2016-07-13 注:本表中未列出的所有日期均视为工作日期 请帮忙

我有一个名为“helper_leaves”的mysql表,其中用户输入了未来2个月的休假日期

我想得到一个特定用户id的两个即将到来的工作日期,它们不在“helper_leaves”表中,也应该在当前日期的旁边

我想写一个查询,从现在开始获取用户_id=1的下两个工作日期。 请注意,此表仅包含休假日期。但我想知道下两个上市日期

对于给出的样本数据,我预计2016-07-14和2016-07-16将作为下两个工作日期,因为今天是2016-07-13

注:本表中未列出的所有日期均视为工作日期


请帮忙

为此,您可以使用interval

例如:

SELECT DATE_ADD(leave_date, INTERVAL 1 DAY) AS workingDay;

你能试试下面的查询吗? 在这种情况下,我刚刚生成了接下来的60个日期,并将休假日期从限制为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天!!是的,但那可能是另一个休假日。我希望始终获取可用日期,也就是当前日期旁边的日期。好的……为此,请添加WHERE条件:WHERE leave_date!=工作日和用户\u id=XSELECT DATE\u ADDDATEleave\u DATE\u start,间隔1天作为helper的工作日\u leave WHERE leave\u DATE!=工作日和用户id=1。
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