日期范围/查询问题

时间:2010-06-12 08:57:39

标签: mysql

我有一个包含3个字段的表:

  • ID
  • datestart
  • dateend

我需要查询这一点,以确定表格中的一对日期是否存在冲突,即

表项1,2010-12-01,2010-12-09

从表格2010-12-08,2010-12-15(编辑,错字)

select id 
  from date_table  
 where '2010-12-02' between datestart and dateend

这会返回我想要的id,但我想要做的是从表单中获取日期范围并执行类似于我所获得的查询,这将同时采用表单日期{{ 1}}并查询数据库以确保表中没有冲突的日期范围。

我一直在摸着问题......

TIA

2 个答案:

答案 0 :(得分:0)

如果我已正确理解您的请求,您希望date_table中的所有条目列表与form_start,form_end重叠或完全包含在form_start - form_end日期范围内。

所以你的查询应该是这样的:

SELECT id FROM
date_table
WHERE
(datestart < form_start AND dateend => form_start)
OR
(datestart <= form_end AND dateend > form_end)
OR
(datestart >= form_start  AND dateend <= form_end)

答案 1 :(得分:-1)

select id from date_table where '2010-12-02' between datestart and dateend;

我不知道你的程序的范围。但是,您似乎在说:从表格中选择id,其中“2010-12-02”日期介于两个变量之间。我想你想选择2个变量之间的datestart。

原谅我&amp;如果我错了,请纠正我?你可能想要这样的东西:

SELECT id FROM date_table WHERE datestart = datestart AND dateend = dateend;

如果是这种情况,你可能只想要一个计数:

SELECT COUNT(id) FROM date_table WHERE datestart = datestart AND dateend = dateend;
祝你好运!