在(My)SQL数据库中存储事件时间的最佳方法

dec*_*eze 5 mysql time

我正在尝试确定在MySQL数据库中存储事件时间的最佳方法.这些应该尽可能灵活,能够代表"单一事件"(在特定时间开始,不一定需要结束时间),"全天"和"多日"事件,重复事件,重复全天事件,可能是"本月第3个星期六"类型的活动等.

请建议一些经过验证的数据库方案.

Sco*_*ham 5

表:事件

  • StartTime(dateTime)
  • EndTime(dateTime)为null,没有结束时间
  • RepeatUnit(int)null = noRepeat,1 =小时,2 =天,3 =周,4 = dayOfMonth,5 =月,6 =年
  • NthDayOfMonth(int)
  • RepeatMultiple(int)例如,将RepeatUnit设置为3,并且每两周设置为2
  • Id - 如果需要,StartTime可能适合您唯一标识事件.
  • 名称(字符串) - 如果需要,为事件指定的名称

这可能有所帮助.它需要相当数量的代码才能解释重复的时间.必须忽略分辨率低于重复单位的部分时间字段.这个月的第3个星期六也不容易...... NthDayOfMonth信息仅仅是为了做这种功能所必需的.

与重复出现的地方所需的代码相比,这需要的数据库模式很简单.


Shi*_*han 0

cron也是这样做的吗?以这种方式记录开始时间和结束时间。