我正在使用 MySQL 和 PHP 构建 SaaS 日历。
前端 javascript 日历库是 fullcalendar(每月 View ) http://fullcalendar.io/
我有一个名为 events
的 mysql 数据表,如下所示:
- 身份证
- ID_USER
- BODY_NAME
- BODY_START
- BODY_END
- IS_DONE
- TIME_CREATED
- TIME_UPDATED
- TIME_DELETED
BODY_START
和 BODY_END
使用 unix_timestamp。
然后在我的 PHP 代码中,我构建了一个查询助手来生成如下 SQL:
"SELECT * FROM `" . $this->_tableName . "` WHERE `ID_ACCOUNT` = '$_id_account' AND (( `BODY_START` >= 1424649600 AND `BODY_START` <= 1428278400 ) OR (`BODY_END` >= 1424649600 AND `BODY_END` <= 1428278400))";
fullcalendar 提供的开始和结束时间戳参数。
有个问题:
如果事件跨越当前月份,则不会显示。
示例:
- ID
f8a58d0c8280db2340863a1ac7aa60b0
- ID_USER
e576c22ce89f38ee422ec818807b99b8
- BODY_NAME
test_event
- BODY_START
1422720000
- BODY_END
1428422400
- IS_DONE
0
- TIME_CREATED
1422845255
- TIME_UPDATED
0
- TIME_DELETED
0
如果您进行查询,该事件将不会显示。
我该如何解决这个问题?谢谢。
最佳答案
如果我理解正确,请将您的查询简化为(伪代码):
BODY_START <= month_end and BODY_END >= month_start
上面的原始查询要求事件必须在该月内开始或结束,但这实际上不是您想要的 - 您希望该月任何时间存在任何事件。
关于php - MySQL 查询日历的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29203860/