【问题标题】:Save multiple dates of an event in MySQL在 MySQL 中保存事件的多个日期
【发布时间】:2011-10-06 22:24:12
【问题描述】:

我正在构建一个显示“本月事件”的系统,按天和小时列出。

创建活动时,我设置了开始日期、结束日期和小时。

假设有一个事件从 2011 年 7 月 10 日开始,到 2011 年 7 月 12 日结束。问题是在此日期范围内的某些日子不会出现该事件。例如,该事件可能会在同一时间全天发生,除非有几天不会发生或有不同的时间(想想开幕日期与其他日子不同的节目)。

我正在使用 PHP、MySQL 和 Codeigniter,我怀疑将这些日期保存在数据库中的正确方法。另一个包含所有日期和事件 ID 的表,或者将它们全部保存在事件行内的字段中?还是别的什么?

谢谢

【问题讨论】:

    标签: php mysql date


    【解决方案1】:

    我会创建两个表。第一个表是events 表,另一个是events_dates 表。通过这种方式,您可以创建一个事件并根据需要关联任意多个日期。

    events_dates 表可以根据您的需要详细或简单。如果是我,我可能会有一个 start_timeend_time 列,以及一个 event_id 和您想要的任何其他数据。

    【讨论】:

    • 谢谢,您的解决方案显然有效,但我担心 events_dates 表会变得非常大。 AurelioDeRosa 保存例外而不是日期的想法对我来说似乎更好。
    • mysql 表旨在处理大量数据。只要确保您正确索引所有内容,您的所有查询都会正常工作。拥有一个例外表可能需要更多的工作来生成良好的、人类可读的日期范围。
    • 您的最后一句话让我犹豫不决...您认为填充日历会是更好的解决方案吗?
    【解决方案2】:

    我会将范围日期存储在一个表中,然后创建一个“异常”表,您可以在其中存储您的异常。

    【讨论】:

    • 我喜欢这个主意。如果我保存异常而不是“特色”天,这应该可以解决“大表”问题(异常比事件发生的天少得多)
    • 没错。在一般情况下,例外情况很少。
    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多