【发布时间】:2018-09-28 23:48:04
【问题描述】:
我真的被困住了。我有一个 db 表,其中列出了已预订时间段的属性。我需要在表格中搜索日期范围。我当前查询的问题是,如果表中列出的日期超出查询的日期范围,则查询不会返回正确的结果。
这是表格的示例propty_availability
id BeginDate EndDate propid
1 2018-10-02 2018-10-10 155855
2 2018-12-15 2018-12-22 159170
3 2018-12-22 2018-12-25 155855
4 2018-12-26 2018-12-29 155855
5 2018-12-05 2018-12-15 155019
6 2018-11-20 2018-11-27 155855
7 2018-12-18 2018-11-27 155655
我的查询是:
从propty_availability中选择propid
在哪里
(开始日期介于“2018-12-20”和“2018-12-27”之间)
和
(EndDate BETWEEN '2018-12-20' AND '2018-12-27')
问题是这个查询将返回记录 3 和 6 只是因为预订的日期范围包括查询的完整日期范围。 我在 begindate 和 enddate 之间尝试了 OR 而不是 AND,但这给了我包含 begindate 或 enddate 的记录。表中包含超出查询日期的列之一的任何内容都不会被列出。
如何让查询向我显示介于我的查询日期之间并对应于表中日期的行? 预期结果是列出第 2、3、4、6、7 行,因为每个行的日期都在查询的范围内。 请随意提问,因为我不熟悉如何在这里发布代码和表格..
【问题讨论】:
-
gave me records that either included begindate or enddate. Anything that is in the table that has one of the columns that fall outside of the queried date don't get listed.这是矛盾的。OR应该是这里的解决方案。编辑:第 6 行和第 7 行不在日期之间,第 7 行实际上是相反的。如果 6 和 7 应该是 2019 年,我想我理解你的问题。 -
对,对不起,7反了,所以忽略它。问题是我尝试了 OR。如果日期超出要求的查询日期,它仍然不起作用。例如,如果一行有 2018-12-19 和 2018-12-28 则不会返回。问题是我需要返回查询日期所在的行。