1

しばらくこれに苦労していたので、助けを探しています。

日付範囲の表があります:

"time_from" 2013-06-03 00:00:00, "time_till" 2013-07-03 00:00:00
"time_from" 2013-05-03 00:00:00, "time_till" 2013-06-03 00:00:00

次に、新しい日付範囲を送信するフォームがあります。

このフォームが送信されたら、新しい日付範囲のどの部分も、現在の既存の日付範囲のどの部分とも競合しないことを確認したいと思います。

誰かが助けてくれますMySQLPHP?

ありがとう

4

3 に答える 3

1

SQLを介して同じ範囲の行が存在するかどうかを確認できます

select if(count(*) >0,'conflicts', 'does not conflict')
from yourTable
where ($startTime between time_from and time_till)
or ($endTime between time_from and time_till)

入力日付のいずれかが既存の日付範囲にある場合、競合が表示されます。それ以外の場合は競合しません

于 2013-07-03T08:19:14.177 に答える
1

これは、mysql クエリを使用して簡単に実行できます。

select * from table where
$variable_start BETWEEN time_from AND time_till OR $variable_end BETWEEN time_from AND time_till

時間が日付範囲内にある場合、行が表示されます

于 2013-07-03T08:19:30.867 に答える
0

内部で仮定するということは、競合があることを意味します。

行ごとに確認する必要があります。

期間の START は現在の期間の START より前ではなく、期間の終了は現在の期間の START より後でありません

期間 START は現在の期間 START より前ではなく、期間の終了は現在の期間 END より後でありません

期間 START は現在の期間 END より前ではなく、期間 END は現在の期間 START より後でありません

期間 START は現在の期間 START より後ではなく、期間の終了は現在の期間 END より前ではありません

于 2013-07-03T08:19:31.630 に答える