获取日期适合特定模式的行。 MySQL的

时间:2014-05-26 17:44:50

标签: php mysql date

我正在创建一个可以有重复日期的在线预订系统,例如。

  • 每周
  • 每两周
  • 每月的第一天{/ li>
  • 月的第二个{日}
  • 每月的第三天 ...等

我的主要问题是,一个用户可以创建一个未来5年的一次性预订(不太可能,但可能),我希望能够显示将要发生的冲突。 我知道我可以获得MAX(日期),然后使用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',
);

1 个答案:

答案 0 :(得分:0)

如果我理解正确,有一种更快的方法(我假设,这是你正在寻找的): 如果将日期定义为主键,并执行“INSERT IGNORE”,则可以查询affectedRows。如果为0,则表示存在冲突。

我希望它有所帮助:)