2010-06-12 128 views
0

我有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,但我想要做的是采取的日期范围从表单中进行查询,并执行与我所得到的查询类似的查询,该查询将采用日期2010-12-08, 20-12-15并查询数据库以确保表中没有冲突的日期范围。

上午坐在抓我的头的问题...

TIA

+0

'20-12-15' - 是不是真的约会?或者只是错误? – 2010-06-12 09:05:05

+0

也定义'冲突'请 – 2010-06-12 09:06:42

+0

不完全在内部或甚至部分?通常一张照片可以帮助。在纸上。用铅笔绘制时间线,然后尝试各种组合。 – 2010-06-12 09:28:11

回答

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) 
+0

感谢您的这一点,它让我思考了这个问题以及自己部分解决它的问题...... (完全解决,直到我的老板给我一个曲线球)..重叠是允许的,因为管理员在早上完成工作,并可以安排在下午开始另一个! '选择 av_bookedid, av_datestart, av_dateend FROM date_table WHERE( 'form_start' datestart 和dateend BETWEEN) OR('form_end'BETWEEN datestart 和dateend);' – Simon 2010-06-12 13:59:03

+0

我不知道,如果这适用于您的场景,但仍然会错过在date_table中重叠整个日期跨度的那些表单日期。 你可以通过添加一个OR(form_start 2010-06-12 14:40:59

+0

这就是我需要的位!你是上帝! 疯了,那么简单的事情可以感受如此遥远... 非常感谢你我的朋友 – Simon 2010-06-12 15:08:03

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

我不知道你的程序的范围。但是,看起来好像你在说:从表中选择id,这个日期“2010-12-02”位于2个变量之间。我想你想选择两个变量之间的datestart。

原谅我&纠正我,如果我错了吗?你可能想是这样的:

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

如果这就是你可能只是想计数的情况下:

SELECT COUNT(id) FROM date_table WHERE datestart = datestart AND dateend = dateend; 

祝你好运!

+0

用简单的英语,我们需要的是确保从form_start到form_end的表格的日期范围与日期范围表中的日期范围不重叠到dateend 也许一些额外的信息会有所帮助,我正在为我的老板做这件事(我是一名焊工!),并且我们使用一些验配人员来安装钢结构工作,我们希望能够获得一份可用的工作人员名单。“#”# 也许这会有所帮助? – Simon 2010-06-12 09:44:37

+0

'从date_table选择id其中datestart和dateend之间 '2010-12-02';' 应改为类似的信息(英文) 'SELECT ID FROM date_table WHERE RANGE form_date_start TO form_date_end IN范围datestart TO dateend' 因此,“应该”给我一个在日期范围内的某个时间忙于工作的“id”列表... – Simon 2010-06-12 09:59:32