Mysql запрос для получения отпуска, взятого человеком - PullRequest
0 голосов
/ 26 мая 2011

У меня есть таблица со следующей структурой

leave_id    int(10)     No           
user_id     int(10)     No           
leavetype_id    int(15)     No           
fromdt  date    No           
todt    date    No           
no_of_days  varchar(10)     No           
status  enum('0', '1', '2', '3')    No           
modifier    varchar(35)     No           
modifiedby  varchar(25)     No           
description     varchar(100)

, который содержит такие данные

leave_id        194
user_id     2
leavetype_id    2
fromdt          2011-04-26
todt            2011-05-09
no_of_days  9
status          3
modifier     
modifiedby   
description     some description

Теперь мне нужно искать по дате отпуска. Например, я хочу видеть листья, которые пользователь взял f (например, user_id = 2) в период с 2011-04-27 по 2011-05-08. Как вы можете видеть, согласно опубликованному выше результату user_id 2 находился в отпуске с 2011-04-26 по 2011-05-09. И указанная дата 2011-04-27 и 2011-05-08 находится между ними.

Я пробовал следующие вещи

  • Между И
  • Меньше, чем

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Ниже показан любой отпуск, который имеет как минимум 1 день общего с периодом от '2011-04-27' до '2011-05-08':

SELECT *
FROM yourtable
WHERE fromdt <= '2011-05-08'
  AND todt >= '2011-04-27' 

Это покажет листья, которые охватывали весь период '2011-04-27' до '2011-05-08':

SELECT *
FROM yourtable
WHERE fromdt <= '2011-04-27' 
  AND todt >= '2011-05-08' 
0 голосов
/ 26 мая 2011

Это похоже на то, что вы ищете:

SELECT *
FROM yourtable
WHERE fromdt < '2011-04-27'
AND todt >  '2011-05-08'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...