用于获取人员休假的Mysql查询

时间:2011-05-26 06:54:02

标签: mysql sql

我有一个包含以下结构的表

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

现在我需要根据请假日期进行搜索。例如,我希望在2011-04-27和2011-05-08之间看到用户使用的叶子(例如user_id = 2)。如您所见,根据上面公布的结果,user_id 2从2011-04-26到2011-05-09休假。而2011-04-27和2011-05-08的给定日期介于其间。

我尝试过以下事情

  • 介于AND
  • 之间
  • 小于大于

2 个答案:

答案 0 :(得分:0)

这似乎是你所追求的:

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

答案 1 :(得分:0)

以下内容将显示与'2011-04-27''2011-05-08'之间的时间段至少相隔1天的任何休假:

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'