2016-07-13 11 views
1

У меня есть таблица mysql с именем «helper_leaves», в которой пользователь вступил в свои даты отпуска в течение следующих 2 месяцев.MySql - Получить следующую дату, которая удовлетворяет условию

Я хотел бы получить 2 предстоящих рабочих даты для конкретного user_id которые в «helper_leaves» таблицы не, а также должны быть рядом с текущей датой.

**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 

Я хочу написать запрос, чтобы получить следующие 2 рабочих даты user_id = 1, теперь. Обратите внимание: эта таблица имеет только даты выезда. Но я хочу получить следующие 2 даты доступности.

Для данных образцов данных, я ожидал получить 2016-07-14 и 2016-07-16 как ближайшие 2 рабочих даты, поскольку сегодня 2016-07-13

Примечание. Все даты, отсутствующие в этой таблице, считаются рабочими.

Пожалуйста, помогите !!!!

+0

Вы хотите получить дату отпуска? Я не вижу столбец рабочих дат? Или вы хотите попасть туда не в таблицу? – Kisaragi

+0

Непонятно, что вы здесь, учитывая образцы данных, каков ваш желаемый результат? –

+0

Отредактировал вопрос !!! –

ответ

2

Можете ли вы попробовать с ниже запроса? В том, что я только генерировать следующий 60 дат и исключить leave_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 
+0

Это работает :) –

0

Для этого вы можете использовать интервал

Для Ex:

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

Извините, это даст только дату отпуска. Я хочу получить следующую дату доступности этого пользователя. –

+0

нет, это добавит +1 день к leave_date на самом деле !! – Kunal

+0

Да, но это может быть еще один день отпуска. Я хочу получить дату доступности всегда, что тоже рядом с текущей датой. –

Смежные вопросы