Sqlite日历重复发生的事件逻辑

时间:2013-05-28 23:55:51

标签: java android sqlite events calendar

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

这是活动表格:

Name
Description
Repetition (with options: Monthly, Yearly and Never)
Date (custom date)

提交表单并将数据插入数据库。这是数据库架构:

id|e_name|e_desc|repeat|day|month|year

由于正在输入数据库的Hijri日期,为方便起见,我将日期分为日|月。

当我想在特定日期显示所有事件时,问题就出现了。如果有简单的一天活动,一切正常。但如果一个日期有多个事件具有不同的重复值,则它永远不会显示正确的数据。

例如: 一个日期有两个事件(为了简单起见,我将使用格里高利历):

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'

。 .it将每月显示事件,但它也会将Yearly事件显示为每月。

如果我查询月份条件:AND month = '5',这只会显示5月的年度和月度事件,但不会显示29/4的月度事件。

简而言之,5月份应该会显示2个月度活动(29/4活动和29/5)以及每年一次活动(29/5)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

select * from user_events where
  (day = ? and month = ? and repeat = 'year')
or
  (day = ? and repeat = 'month')