0

我正在使用自定义日历(回历日历)在我的应用程序中显示事件。我有一个简单的事件数据库,用户在其中输入详细信息,自定义日历显示输出。

这是事件形式:

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)。

我该如何解决这个问题?

4

1 回答 1

2
select * from user_events where
  (day = ? and month = ? and repeat = 'year')
or
  (day = ? and repeat = 'month')
于 2013-05-29T00:20:45.477 回答