gpt4 book ai didi

php - 通过 MySQL 或 PHP 检查重叠时间段(日期之间)

转载 作者:行者123 更新时间:2023-11-30 00:04:21 25 4
gpt4 key购买 nike

我需要一些关于这个的逻辑..

我有一个 MySQL 表如下

id | program_name | start_date | end_date
1 | program1 | 2014-12-01 | 2014-12-07

现在,如果我想通过 PHP 为 id 1 插入一条新记录,我想检查周期(start_date 和 end_date 之间)是否重叠。

假设我想插入一条新记录

id = 1 , program_name = program1 , start_date = 2014-12-06 , end_date = 2014-12-10

由于这里的时间段重叠,我想抛出一条警告消息。我需要逻辑。

我想到的是,

Let 

start_date in database = old_start_date , end_date in database = old_end_date, the insert record start date = new_start_date , insert record end date = new_end_date

如果

old_start_date < new_start_date and old_end_date < new_end_date == fine  (period before the entered period)
old_start_date > new_start_date and old_end_date > new_end_date == fine (period after the entered period)
old_start_date < new_start_date and old_end_date > new_end_date == warning (old period is within the new period)
old_start_date > new_start_date and old_end_date < new_end_date == warning (new period is within the old period)
old_start_date = new_start_date == warning
old_end_date = new_end_date == warning

如果我错了,或者是否有更有效的方法通过 MySQL 或 PHP 来完成此操作,请指导我。

谢谢。

最佳答案

以下是您应该工作的逻辑顺序:(一旦理解了它,就可以在任何编程语言中使用它)

1- 创建function_a(date d),如果日期大于特定日期,则返回 true

2- 创建function_b(date d),如果日期小于特定日期,则返回 true

3- 创建一个循环并调用function_a(在所有old_end_dates上调用它)并仅当所有结果都返回true时才返回true(将结果保存在var_a中)
一般来说:只有当新的开始日期大于所有记录的结束日期时,才返回 true

4- 创建一个循环并调用 function_b(在所有 old_end_dates 上调用它),并仅当所有结果都返回 true 时才返回 true(将结果保存在 var_b 中)< br/>一般来说:只有当新的结束日期小于所有记录的结束日期时,才返回 true

5- If (var_a==true or var_b ==true ) -----> 那么保存新记录是安全的,因为如果新的开始日期晚于旧的记录结束日期,或者新的结束日期早于旧的开始日期,则它们不能重叠。

关于php - 通过 MySQL 或 PHP 检查重叠时间段(日期之间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24720799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com