我一直在网上搜索此内容,但无法找到有价值的信息。问题是用数据结构形式表示区间的理想方式是什么?例如,如果您希望表示周二中午 12 点到下午 2 点发生的欢乐时光,那么用于表示此情况的理想数据结构是什么。滚动的间隔(例如 1 小时前)怎么样?哪种数据结构最灵活地集中体现了这些概念并且可以存储在 SQL 表中?间隔应该考虑时区吗?
要在 SQL 表中表示各种间隔类型(例如固定欢乐时光或滚动间隔),请考虑以下数据结构:
Recurrence Pattern:一个枚举字段,用于指示间隔类型(例如,每天、每周、每月、无滚动间隔、单个表示一次性事件)。包括基本时间的“anchor_time”。
起始参考和单位:
start_reference
:与“anchor_time”的偏移量的整数。start_reference_units
:单位枚举(例如秒、小时、天、周)。持续时间和单位:
duration
:间隔长度的整数。duration_units
:持续时间单位的枚举(例如秒、小时、天、周)。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
:1duration_units
:“小时”