【发布时间】:2012-12-04 14:57:32
【问题描述】:
我有一个这样的 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)
【问题讨论】:
-
您是指与该时期重叠或完全包含在该时期内的所有IDS?在您的示例中,这似乎无关紧要,但可能在您的真实数据中可能。
-
“包含”是什么意思?完全在里面还是相交?
-
问题是,如果我搜索一个时期(包括和相交),即:从 0000-12-12 到 0000-01-25 我从选择中得到 0 条记录,我猜那一年是'0000'..我该如何解决它?
标签: php mysql sql date datetime