![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在の日時を基準に下記テーブルより直近で空いている日付とその時間帯を求めるSQLを教えて下さい。
下記のjikan_tblは、未来の予定のレコードが登録されています。
1レコード目は、2013年9月27日10時から同日の10時15分までの予定のデータです。
15分間隔で予定のレコードを登録していますが、現在の日時が2013年9月27日の10時の場合、
直近で予定を入れられる時間帯を知りたいのでSQLで同日の10時45分から11時が空いていると取得できればベストです。
ちなみに同日の11時15分から11時30分と取得されてしまうのは、NGです。
jikan_tbl
date_start int(8),
time_start int(4),
date_end int(8),
time_end int(4)
jikan_tblのレコード
20130927 | 1000 | 20130927 | 1015
20130927 | 1015 | 20130927 | 1030
20130927 | 1030 | 20130927 | 1045
20130927 | 1100 | 20130927 | 1115
20130927 | 1130 | 20130927 | 1140
難しく調べても分かりません。
知恵を貸して下さい。
宜しくお願いします。
os: windows 7
eclipse: Version: 4.2.0
Build SDK: Android 4.3(API 18)
PHP 5
No.2ベストアンサー
- 回答日時:
datetimeバージョンをざっと
//元データ
create table t_jikan(start datetime,end datetime);
insert into t_jikan values('2013-09-27 10:00','2013-09-27 10:15'),('2013-09-27 10:15','2013-09-27 10:30'),('2013-09-27 10:30','2013-09-27 10:45'),('2013-09-27 11:00','2013-09-27 11:15'),('2013-09-27 11:30','2013-09-27 11:40');
//後ろ時間が空いているviewをつくっておく
create view v_jikan as
select j1.start,j1.end
from t_jikan as j1
left join t_jikan as j2
on j1.end=j2.start
where j2.start is null;
//空き時間一覧
select v1.end as start,min(v2.start) as end
from v_jikan as v1
inner join v_jikan as v2
on v1.end < v2.start
group by start;
//特定時間の直近の空き時間
select v1.end as start,min(v2.start) as end
from v_jikan as v1
inner join v_jikan as v2
on v1.end < v2.start
where v1.end>='2013-09-27 10:00'
group by start
order by start
limit 1;
ここで'2013-09-27 10:00'を
'2013-09-27 10:45'や'2013-09-27 10:50'や'2013-09-27 11:50'に
変えると状況がヒットするレコードが変わることがわかる
この回答への補足
回答ありがとうございます。
実際に実行してみました。
素晴らしいです。
こんな難しいSQLは初めてですが、自分なりに意味を調べて勉強します。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- その他(学校・勉強) 浪人中の過ごし方について こんばんは。現在、大学受験の浪人生をしています。 1日のスケジュールを立て 3 2023/04/12 21:38
- 大学受験 浪人中の過ごし方について こんばんは。現在、大学受験の浪人生をしています。 1日のスケジュールを立て 6 2023/04/12 19:20
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- 転職 転職活動中で2社内定があり迷っています。皆様ならAとBどちらの方が良いと思いますか?理由もお願いしま 1 2023/02/06 12:20
- 簿記検定・漢字検定・秘書検定 4月から商業高校の会計科に通う予定の中学生です。現在春休みで、簿記検定3級を取得しようと考えており、 1 2023/03/04 14:40
- 九州・沖縄 6月の2泊3日2人での沖縄旅行のプランにアドバイスが欲しいです! 雨の時期のため臨機応変な観光になる 7 2023/05/09 02:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文の実行結果に空白行を...
-
SQLで連続したカラムが何個ある...
-
mysql5でGROUP BYごとにLIMIT??
-
割合(パーセント)を求めるには?
-
SQLだけでselect結果に定数を加...
-
空きのID番号を取得する方法
-
Select文1 マイナス Select文2
-
SQL文の入れ子について
-
任意の上位の集計を取得するには?
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
1の行を固定した上でVBAを用い...
-
データ
-
count関数の値をwhere句で使用...
-
SQL文 複数実行
-
AccessのSQL文で1件のみヒット...
-
並べ替えについて
-
枝番の最大値とその前のデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
SQL文の入れ子について
-
24時間以内に更新されたデータ...
-
時間帯テーブルから直近空き時...
-
空きのID番号を取得する方法
-
LIMIT句で少なくとも1行は選択...
-
Mysqlで変数を使ったSELECT文の...
-
SQLにて順列の抽出
-
SQLだけでselect結果に定数を加...
-
任意の上位の集計を取得するには?
-
条件付けで集計したものをUNION...
-
mysql5でGROUP BYごとにLIMIT??
-
3テーブルの外部結合
-
MySQLのサブクエリ
-
時間帯テーブルから直近空き時...
-
SQLで連続したカラムが何個ある...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
テーブルの最後(最新)のレコー...
おすすめ情報