Mysql 日期范围/查询问题

Mysql 日期范围/查询问题,mysql,Mysql,我有一个包含3个字段的表: 身份证 日期开始 日期结束 我需要对此进行查询,以确定表单中的一对日期是否冲突,即 表条目1,2010-12-01,2010-12-09 来自表格2010-12-082010-12-15(编辑,打字) 这将返回我想要的id,但我想做的是从表单中获取日期范围,并执行类似于我得到的查询,该查询将同时获取表单日期2010-12-08、20-12-15,并查询db以确保表中没有冲突的日期范围 我坐着为这个问题挠头 短暂性脑缺血发作 我不知道你们计划的范围。但是,您似乎在说

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

  • 身份证
  • 日期开始
  • 日期结束
我需要对此进行查询,以确定表单中的一对日期是否冲突,即

表条目1,2010-12-01,2010-12-09

来自表格2010-12-082010-12-15(编辑,打字)

这将返回我想要的
id
,但我想做的是从表单中获取日期范围,并执行类似于我得到的查询,该查询将同时获取表单日期
2010-12-08、20-12-15
,并查询db以确保表中没有冲突的日期范围

我坐着为这个问题挠头

短暂性脑缺血发作

我不知道你们计划的范围。但是,您似乎在说:从表中选择id,其中日期“2010-12-02”介于两个变量之间。我想您应该选择datestart在这两个变量之间的位置

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

SELECT id FROM date_table WHERE datestart = datestart AND dateend = dateend;
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)
如果是这样的话,您可能只需要计算一下:

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

祝你好运

如果我正确理解了您的请求,您希望日期表中的所有条目列表与表单开始、表单结束或完全包含在表单开始-表单结束日期范围内

因此,您的查询应该如下所示:

SELECT id FROM date_table WHERE datestart = datestart AND dateend = dateend;
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)
从中选择id
日期表
哪里
(datestartform\u start)
或
(日期开始表格\结束)
或

(datestart>=form_start AND dateend
20-12-15
-它真的是日期吗?还是仅仅是错误?还要定义冲突的
请不要全部在里面,甚至是部分在里面?通常一张图片会有所帮助。在纸上。用铅笔画一个时间线,然后尝试各种组合。用简单的英语,我需要的是确保日期范围从表格
form\u start
to
form\u end
与表格
datestart
to
dateend
中的日期范围不重叠,可能需要一些额外的信息,我这样做是为了我的老板(我是一名焊工!)我们使用了许多装配人员来安装钢结构作业,我们希望能够获得可用人员的列表,
id
,也许这会有所帮助?
从date\u表中选择id,其中“2010-12-02”介于datestart和dateend之间;
应该是这样的内容(英文)
从date\u表中选择id,其中范围从date\u date\u开始到date\u结束,范围从datestart到dateend
,以便“应该”给我一个在日期范围内某个时间忙于某项工作的
id
的列表……谢谢,这让我思考了这个问题,并自己部分解决了它。。。(直到我的老板扔给我一个曲线球才完全解决)…允许重叠,因为装配人员早上完成工作,可以安排在下午开始另一项工作!!!
选择av_bookedid、av_datestart、av_dateend FROM date_table WHERE('form_start'介于datestart和dateend之间)或('form_end'介于datestart和dateend之间);
我不知道这是否适用于您的场景,但您仍然会错过那些与date_表中的整个日期跨度重叠的表单日期。您可以通过添加OR(form_start