私は、なし、毎日、毎週、毎月、毎年繰り返されるカレンダーアプリケーションを設計しています。私の要件の 1 つは、「2 つのイベントが重複してはならない」ということ です。データを保存するテーブルの名前
イベント
田畑
dtstart - イベント開始時刻
dtend - イベント終了時刻
次の 2 つのケースを考えてみましょう。
Event1 8 月 15 日 午後 3:00 ~ 午後 4:00 再発 - なし
Event2 8 月 15 日午後 2:00 ~ 午後 5-00 再発 - なし
上記の場合、次の SQL クエリは魅力的に機能します
String sqlQuery = "SELECT * FROM Events WHERE dtstart AND dtend BETWEEN %d AND %d";
sqlQuery = String.format(sqlQuery, dtstart, dtend);
ここで、ケース 2 を考えてみましょう。
Event1 8 月 15 日 午後 3:00 ~ 午後 4:00 繰り返し - 8 月 20 日まで毎日
Event2 8 月 18 日午後 2:00 ~ 午後 5-00 再発 - なし
2 つの sqlQuery が失敗した場合、同じ日付 (8 月 18 日) のイベントの開始時刻と終了時刻がチェックされるためです。私の場合、クエリは 8 月 15 日の競合する時間を表示するはずです。
定期的なイベントもチェックされるように、SQL クエリを手伝ってください。
イベント テーブルには、開始時刻、終了時刻、最後に発生した日付、および発生タイプを格納します。
データベーススキームは次のとおりです
テーブル名: イベント
タイトル| dtstart | dtend | リピートタイプ| 最後の発生