我正在构建一个自定义事件系统,如果你有一个如下所示的重复事件:
活动A从2011年3月3日起每4天重复一次
要么
活动B于2011年3月1日星期二每2周重复一次
如何以一种易于查找的方式将其存储在数据库中.如果有大量事件,我不希望出现性能问题,在渲染日历时我必须经历每一个事件.
我想尝试使用PHP/MySQL在日历上臭名昭着的重复事件.我终于找到了似乎有用的东西.我在这里找到了答案但是我有点难以完成它.
我的第一张桌子'事件'.
ID NAME
1 Sample Event
2 Another Event
Run Code Online (Sandbox Code Playgroud)
我的第二个表'events_meta存储重复数据.
ID event_id meta_key meta_value
1 1 repeat_start 1336312800 /* May 7th 2012 */
2 1 repeat_interval_1 432000 /* 5 days */
Run Code Online (Sandbox Code Playgroud)
假设repeat_start是没有时间作为unix时间戳的日期,repeat_interval是间隔之间的秒数(432000是5天).
然后我有以下MySQL,我从上面的链接稍微修改了一下.下面使用的时间戳(1299132000,即2012年5月12日)是当前没有时间的日期.
SELECT EV.*
FROM `events` EV
RIGHT JOIN `events_meta` EM1 ON EM1.`event_id` = EV.`id`
RIGHT JOIN `events_meta` EM2 ON EM2.`meta_key` = CONCAT( 'repeat_interval_', EM1.`id` )
WHERE EM1.meta_key = 'repeat_start'
AND (
( CASE ( 1336744800 - EM1.`meta_value` )
WHEN 0
THEN 1
ELSE …
Run Code Online (Sandbox Code Playgroud) 如何查找范围内的所有日期位置..
从日期 01- Jan -2014 00:00:00 A.M
至今 15-Oct-2014 00:00:00 P.M
事件开始日期03-Jan-2014 10:00 A.M
每3天发生一次,分别为03,06,09等
我需要使用c#计算如下所示
03-JAN-2014
06-JAN-2014
09-JAN-2014
12-JAN-2014
等等,等等
如何在c#中完成这些计算?尝试在DB中失败,请选中显示下一个事件日期