MySQL 查询日历的事件
MySQL query the events for a calendar
我正在使用 MySQL & PHP 构建 SaaS 日历。
前端javascript日历库为fullcalendar(月视图)
http://fullcalendar.io/
我有一个名为 events
的 mysql 数据 table,如下所示:
- ID
- 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))";
完整日历提供的开始和结束时间戳参数。
有一个问题:
如果事件跨越当前月份,则不会显示。
示例:
- 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
您上面的原始查询查询要求事件必须在该月开始或结束,但这实际上不是您想要的 - 您想要 存在 的任何事件的任何部分这个月。
我正在使用 MySQL & PHP 构建 SaaS 日历。
前端javascript日历库为fullcalendar(月视图) http://fullcalendar.io/
我有一个名为 events
的 mysql 数据 table,如下所示:
- ID
- 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))";
完整日历提供的开始和结束时间戳参数。
有一个问题:
如果事件跨越当前月份,则不会显示。
示例:
- 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
您上面的原始查询查询要求事件必须在该月开始或结束,但这实际上不是您想要的 - 您想要 存在 的任何事件的任何部分这个月。