MySQLバージョン:5.6
テーブル定義:
CREATE TABLE `terms` ( `id` int(11) NOT NULL AUTO_INCREMENT, `start` datetime DEFAULT NULL, `end` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
データ定義:
INSERT INTO `terms` VALUES (1,'2016-09-27 07:00:00','2016-09-27 08:00:00'),(2,'2016-09-27 09:00:00','2016-09-27 10:00:00');
SELECT結果:
+----+---------------------+---------------------+
| id | start | end |
+----+---------------------+---------------------+
| 1 | 2016-09-27 07:00:00 | 2016-09-27 08:00:00 |
| 2 | 2016-09-27 09:00:00 | 2016-09-27 10:00:00 |
+----+---------------------+---------------------+
入力された時間帯がstart〜endの範囲にどちらかでもかぶっていれば該当行を返すSQLを作成したいのですが、ご教示頂けないでしょうか?以下の入力と結果になるようなSQLを作成したいです。
[start] 2016-09-27 06:30:00
[end] 2016-09-27 07:00:00
↓
[結果] 該当行なし
[start] 2016-09-27 06:30:00
[end] 2016-09-27 07:30:00
↓
[結果] 1行目
[start] 2016-09-27 07:30:00
[end] 2016-09-27 08:00:00
↓
[結果] 1行目
[start] 2016-09-27 07:30:00
[end] 2016-09-27 08:30:00
↓
[結果] 1行目
[start] 2016-09-27 08:30:00
[end] 2016-09-27 09:00:00
↓
[結果] 該当行なし
[start] 2016-09-27 06:30:00
[end] 2016-09-27 09:30:00
↓
[結果] 1、2行目
該当行がない場合に、入力された時間帯でtermsテーブルにINSERTする処理で使用します。
宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/27 06:07
2016/09/27 10:23