質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

解決済

2回答

4419閲覧

oracleで特定の時間帯を含む結果の抽出

maaaa

総合スコア14

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

0クリップ

投稿2017/01/30 03:24

編集2017/02/03 14:54

お世話になります。

oracleで、作業Aの開始時間と終了時間の中に9時〜18時が含まれている人物を抽出したいです。

開始時間か終了時間のどちらかが9時〜18時にかかっている人は抽出したのですが、9時〜18時を丸々含んでいる人をどのように出せばいいのか悩んでいます。

よろしくお願い致します。

■追記
質問が大雑把ですみません…

テーブルA
氏名 作業名 開始時間 終了時間

A子 作業A 2016/01/01 03:00:00 2016/01/01 08:00:00
B男 作業B 2016/01/02 10:00:00 2016/01/02 19:00:00
C美 作業C 2016/01/03 08:00:00 2016/01/03 19:00:00

このようなテーブルAがあり、最終的にB男とC美を抽出したいです。
現在、指定の時間帯である9時~18時に開始時間が被っているB男のみ抽出できています。
C美を抽出するための条件がほしいです…

◾︎追記
すみません、焦って書き込んでしまい、自分で条件をきちんと整理出来ていませんでした...最初に作業Aと言ってしまいましたが、sleepsheepさんがおっしゃる通り、9時から18時に作業していた人を抽出したかったのです。
「条件に合わない条件」を試したところ、思った通りの結果を出すことができました。
お二方とも質問に親切にお答えいただき、ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sleepsheep

2017/01/30 13:37

「作業A」が抽出条件に入るのであれば、C美は「作業C」を行っているので対象外になるのではありませんか?
tacsheaven

2017/01/31 00:38

これ、B男は作業開始が9時よりあとですから、抽出されてはダメなのでは?
sleepsheep

2017/01/31 03:39

「9時~18時に作業をしていた人」を抽出したいということでは?条件をもっと明確にしていただきたいです。
guest

回答2

0

条件を整理してみると、

  • 開始時間が 09:00 以前である
  • 終了時間が 18:00 以後である

の二つを同時に満たす作業Aを持っている人ですよね?
作業Aテーブルがどういう構造なのか提示してください。

※開始時間のカラムが「年月日を含む」のかどうかでまた変わってくるので


テーブル例示に伴い追記
条件として、

  • 開始時間と終了時間が同一日であり
  • かつ開始時間が09:00 以前であり
  • かつ終了時間が18:00 以後である

人を抽出すると考えます。(開始時間と終了時間が別の日の場合は条件が違ってきますので)
ベタに書けばこうですかね。

SQL

1SELECT * FROM テーブルA 2WHERE TO_CHAR(開始時間,'YYYYMMDD')=TO_CHAR(終了時間,'YYYYMMDD') 3AND EXTRACT(HOUR FROM 開始時間) < 9 4AND EXTRACT(HOUR FROM 終了時間) >= 18

投稿2017/01/30 03:41

編集2017/01/31 00:55
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

質問からは「作業A」がどのように関わるのかよく分かりませんが、やりたいことを「テーブルAがあり、最終的にB男とC美を抽出したい」として回答します。

条件に合わない条件は以下のようになります。
・開始時間が18時以後である。
OR
・終了時間が9時以前である。

この条件の否定を取れば、条件を満たすデータが抽出できると思います。

投稿2017/01/30 13:45

sleepsheep

総合スコア310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問