php - 获取日期符合特定模式的行。 MySQL

标签 php mysql date

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

  • 每周
  • 每两周一次
  • 每月第一{天}
  • 每月的第二个{天}
  • 本月第三{天} ...等等

我的主要问题是,一个用户可以创建 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/

相关文章:

具有多个参数的php pdo搜索代码

php - 如何在 YiiBooster 模块中设置 TbExtendedGridView 的页面大小?

php - 当使用 mysqli_fetch_assoc(result) 时,结果会怎样?

c# - 将 Entity Framework 与 MySQL 一起使用时,Unicode 字符将替换为基本字符

java - 在谷歌日历事件中设置日期

php - Jquery UI Portlets - 使用 Ajax 加载和编辑 portlet

PHP 等价于 friend 或内部

mysql - 评论的实现,对此有什么最佳实践吗?

php - 如何在 PHP 中将 ISO8601 日期转换为另一种格式?

r - 将多个字符列转换为 R 中的 as.Date 和 time