1

我有一个这样的mysql表:

   | ID | ID_period | date_start |  date_end  |
   | 1  |   1       | 0000-07-01 | 0000-08-31 |
   | 2  |   2       | 0000-09-01 | 0000-10-30 |
   | 3  |   3       | 0000-11-01 | 0000-12-28 |
   | 4  |   4       | 0000-11-01 | 0000-03-31 |

如何选择包含在此期间 0000/07/14 - 0000/08/25 之间的 ID?

date_start 和 date_end 列是 DATE 格式。

问题是,如果我搜索一个时期(包括和相交),即:从 0000-12-12 到 0000-01-25,我从选择中得到 0 条记录,我猜那一年是“0000”。 . 我该如何解决?

另一个问题是,如果我搜索 11-01 到 12-31 这样的时期,我得到 0 个结果。因为 date_end 中的最后一天 12 月是 28 .. 但是如果我搜索 11-01 到 12-31 的时期是因为我希望包含所有记录..所以我想获得 id=3 和 id=4 的记录

目前我正在使用以下查询:

SELECT ... WHERE '12' BETWEEN MONTH(date_start) and MONTH(date_end)
AND '15' BETWEEN DAY(date_start) and DAY(date_end)
AND '03' BETWEEN MONTH(date_start) and MONTH(date_end)
AND '28' BETWEEN DAY(date_start) and DAY(date_end)
4

1 回答 1

4
SELECT  *
FROM    mytable
WHERE   date_start BETWEEN '0000-07-14' AND '0000-08-25'
        OR date_end BETWEEN '0000-07-14' AND '0000-08-25'
        OR (date_start<'0000-07-14' AND date_end>'0000-08-25')
于 2012-12-04T15:04:17.027 回答