我有以下问题:
事件有“开始”和“结束”时间和数量。我对两者都使用 MySQL DATETIME。
现在,如果我有一个说“没有重叠事件”的约束,我需要进行一些检查等,但是如何设计呢?用户只需要 5 分钟左右的精度,但我想用几秒钟来计算,因为那是“更简单”/“更干净”
如果我有一个以“YYYY-MM-DD 12:00:00”-“YYYY-MM-DD 14:00:00”为起点的事件 (A)
和另一个
(B) "YYYY-MM-DD 14:00:00"-"YYYY-MM-DD 16:15:00" -> 即使它们都包含 14:00:00,它们也不重叠。
为了确定它们确实不重叠,我应该使用
A.end < B.begin 等
或者
A.end <= B.begin 等并进行“破解”,使得所有结束时间都是“DATE HH:MM:00(减去一秒)”而不是“DATE HH:MM:00”,即 A.end然后将是“YYYY-MM-DD 13:59:59”而不是“YYYY-MM-DD 14:00:00”
第一个是最简单的,但是如果我有很多不同的事件并且需要检查我没有“超额预订”,即事件的单个金额不超过总金额,它会错过任何重叠(例如:如果每个事件是多人预订的一张桌子,我在任何时候都不能超过桌子的总数)