理想区间数据结构?

问题描述 投票:0回答:1

我一直在网上搜索此内容,但无法找到有价值的信息。问题是用数据结构形式表示区间的理想方式是什么?例如,如果您希望表示周二中午 12 点到下午 2 点发生的欢乐时光,那么用于表示此情况的理想数据结构是什么。滚动的间隔(例如 1 小时前)怎么样?哪种数据结构最灵活地集中体现了这些概念并且可以存储在 SQL 表中?间隔应该考虑时区吗?

time intervals scheduling
1个回答
0
投票

要在 SQL 表中表示各种间隔类型(例如固定欢乐时光或滚动间隔),请考虑以下数据结构:

数据结构

  1. Recurrence Pattern:一个枚举字段,用于指示间隔类型(例如,每天、每周、每月、无滚动间隔、单个表示一次性事件)。包括基本时间的“anchor_time”。

  2. 起始参考和单位:

    • start_reference
      :与“anchor_time”的偏移量的整数。
    • start_reference_units
      :单位枚举(例如秒、小时、天、周)。
  3. 持续时间和单位

    • duration
      :间隔长度的整数。
    • duration_units
      :持续时间单位的枚举(例如秒、小时、天、周)。

SQL 表结构

CREATE TABLE intervals (
  event_id INT PRIMARY KEY,
  recurrence_pattern ENUM('daily', 'weekly', 'monthly', 'none', 'single'),
  anchor_time TIMESTAMP,
  start_reference INT,
  start_reference_units ENUM('second', 'hour', 'day', 'week'),
  duration INT,
  duration_units ENUM('second', 'hour', 'day', 'week')
);

使用示例

  • 固定时间间隔(例如周二中午 12 点至下午 2 点的欢乐时光):

    • recurrence_pattern
      :“每周”
    • anchor_time
      :[特定星期二中午 12 点的时间戳]
    • start_reference
      :0(因为它从锚定时间开始)
    • start_reference_units
      :“小时”
    • duration
      :2(从开始起 2 小时)
    • duration_units
      :“小时”
  • 滚动间隔(例如,“1 小时前到现在”)

    • recurrence_pattern
      :“无”(因为它是滚动间隔)
    • anchor_time
      :[当前时间戳]
    • start_reference
      :-1(1小时前)
    • start_reference_units
      :“小时”
    • duration
      :1
    • duration_units
      :“小时”
© www.soinside.com 2019 - 2024. All rights reserved.