Mysql 检查日期范围是否以月(日历)为单位
我试图用sql检查日期范围(包括开始日期和结束日期)是否在一个月内(关于一年)。月份和年份是给定的变量(获取变量) 这是我的桌子:Mysql 检查日期范围是否以月(日历)为单位,mysql,sql,Mysql,Sql,我试图用sql检查日期范围(包括开始日期和结束日期)是否在一个月内(关于一年)。月份和年份是给定的变量(获取变量) 这是我的桌子: +----+------+-------+-----+ | id | name | start | end | +----+------+-------+-----+ 因为约会可能只是一个日期(开始和结束会是同一日期),所以我不得不考虑这个问题。 我的查询 SELECT id, name, start, end FROM appo
+----+------+-------+-----+
| 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个月,此查询将失败。如果您想知道某个特定月份是否在该范围内,那么我建议将日期转换为YYYYMM格式。这使得逻辑相对容易表达:
where ?*100 + ? between year(start)*100 + month(start) and
year(end)*100 + month(end)
如何将日期转换为YYYYMM?可能在查询中,例如
DATE\u格式(start'YYYYMM')作为start2
?但这行不通。@Bernd。这就是算术所做的。将年份乘以100,然后将月份相加。您还可以使用date\u format()
,因为这将适用于字符串和数字。