我正在尝试使用sql检查日期范围(包含开始日期和结束日期)是否在一个月内(相对于年份)。月和年给出变量(GET变量)。
这是我的表:
+----+------+-------+-----+
| id | name | start | end |
+----+------+-------+-----+
因为约会可能只是一个日期(开始和结束将是同一天),我必须考虑这个。
我的查询
SELECT
id,
name,
start,
end
FROM appointments
WHERE (MONTH(start) = ? AND YEAR(end) = ?) OR (MONTH(start) = ? AND YEAR(end) = ?)
ORDER BY start
此查询的问题在于它只检查开始月份和结束月份而不是之间的月份。例如,如果约会超过5个月,则此查询将失败。
答案 0 :(得分:3)
如果您想知道特定月份是否在该范围内,那么我建议将日期转换为YYYYMM格式。这使得逻辑相对容易表达:
where ?*100 + ? between year(start)*100 + month(start) and
year(end)*100 + month(end)