我有一个日历,显示给定月份和年份的事件。每个事件在 DATETIME
字段中都有开始时间和结束时间。
$org = $_SESSION['org_id'];
$month = 5;
$year = 2013;
以下仅检索在指定月份/年份内开始或结束的事件:
SELECT * FROM events WHERE org='$org' AND
((MONTH(time_start)='$month' AND YEAR(time_start)='$year') OR
(MONTH(time_end)='$month' AND YEAR(time_end)='$year'))
它不会返回在指定月份/年份之外开始和结束的事件。
例如。 time_start='2013-04-07 12:00:00' time_end='2013-06-07 12:00:00'
- 在我 2013 年 5 月的查询中找不到该事件。
如何选择开始、结束或跨越给定月份/年份的事件?
最佳答案
SELECT * FROM events
WHERE org='$org'
AND time_start < '$year-$month-01 00:00:00' + INTERVAL 1 MONTH
AND time_end > '$year-$month-01 00:00:00'
;
如果你对 mysql 很好,你甚至可以将字符串转换为日期,其他数据库也类似,但 mysql 对字符串还很满意。
关于php - MySQL 查询 - 按月和年查找范围内的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427692/