我正在创建一个在线预订系统,可以有重复的日期,例如
- 每周
- 每两周一次
- 每月第一{天}
- 每月的第二个{天}
- 本月第三{天} ...等等
我的主要问题是,一个用户可以创建 5 年后的一次性预订(不太可能,但有可能),并且我希望能够显示将发生的冲突。 我知道我可以获取 MAX(date),然后使用 PHP 创建一个从现在到最远预订之间的可能日期数组,然后使用
WHERE `date` IN ({big array of dates})
但我想知道是否有一种方法可以让 MySQL 为我计算日期。 我的 MySQL 知识不是初学者,但仍然很基础。
谢谢。
编辑
一次性事件和重复事件都仅存储为一行。每行都有一个 recurring_type
(1-8) 和 recurring_day
(1-7),它们都可以为 NULL,这表明它们是一次性的。
下面是重复类型的数组
array(
1 => 'every_week',
2 => 'every_2_weeks',
3 => 'every_3_weeks',
4 => 'every_4_weeks',
5 => 'first_day_of_month',
6 => 'second_day_of_month',
7 => 'third_day_of_month',
8 => 'forth_day_of_month',
);
最佳答案
如果我理解正确,有一种更快的方法(我假设这就是您正在寻找的方法): 如果将日期定义为主键,并执行“INSERT IGNORE”,则可以查询受影响的行。如果为 0,则发生冲突。
希望对你有帮助:)
关于php - 获取日期符合特定模式的行。 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875335/