我正在使用自定义日历(回历日历)在我的应用程序中显示事件。我有一个简单的事件数据库,用户在其中输入详细信息,自定义日历显示输出。
这是事件形式:
Name
Description
Repetition (with options: Monthly, Yearly and Never)
Date (custom date)
提交表单并将数据插入数据库。这是数据库架构:
id|e_name|e_desc|repeat|day|month|year
由于输入数据库的是回历日期,为方便起见,我将日期拆分为日|月|年。
当我想显示特定日期的所有事件时,问题就来了。如果有简单的一日活动,一切正常。但是,如果某个日期有多个事件具有不同的重复值,则它永远不会显示正确的数据。
例如:一个日期有两个事件(为了简单起见,我将使用公历):
29/5/2013 -1- Monthly event
29/5/2013 -2- Yearly event
这应该会显示 2013 年 5 月 29 日的两个事件。但是,事件 1 应每月再次发生。这是查询:
select * from user_events WHERE day = '29' AND month = '5'
无论重复条件如何,这将显示该日期的所有事件。但是,如果我想在29/4/2013
. 如果我查询这个:
select * from user_events WHERE day = '29'
. .它将每月显示事件,但它也会将每年的事件显示为每月。
如果我查询月份条件:AND month = '5'
,这将只显示 5 月的年度和每月事件,但不会显示 29/4 的每月事件。
简而言之,5 月份应显示 2 个每月事件(29/4 事件和 29/5)和一个年度事件(29/5)。
我该如何解决这个问题?