2017-11-30 6 views
0

私は、チューターの利用可能性をチェックし、それらとのアポイントをスケジュールするためにデータベースを作成しています。この例の外でGUIとトリガを実行します。SQLで時間を扱う

私の問題は、私は家庭教師の情報だけでなく、彼らが利用可能な時間を含む表、家庭教師を持っています。テーブルの作成中にデータタイプとして宣言すると、有効なデータ型として認識されません。

スケジューリングテーブルで後で参照できるように、各チューターの利用可能時間を保存したいと思います(その日にチューターが利用可能かどうかチェックして、スケジュールテーブルの更新を許可します)。また、各チューターは一定の時間数だけ働くことができます。これらの問題はその点以外にもありますが、与えられたデータ型と競合して、なぜ私が時間を使用しているのかを説明します。

Iは、PL/SQLとOracle SQL Developerを使用しています。上記の情報について

任意の洞察力が高く評価され、私は以下の私のコードが含まれている、テーブルのスケジュール」を参照

----Dropping tables---- 
drop table student cascade constraints; 
drop table course cascade constraints; 
drop table schedule cascade constraints; 
drop table tutor cascade constraints; 

----Creating Tables----- 
create table course(
cou_id number(4), 
major_id number(4), 
cou_name varchar2(20), 
major_name varchar2 (20), 
professor varchar2 (20), 
constraint course_pk primary key (cou_id) 
); 


create table student(
stu_id number(4) constraint stu_id_pk primary key, 
stu_fn varchar2 (20), 
stu_ln varchar2 (20), 
stu_city varchar2 (20), 
stu_ethn varchar2 (20), 
cou_id number(4) constraint cou_id_fk references course(cou_id), 
stu_gpa number(3,2) constraint stu_gpa_c1 check (stu_gpa <=4.0 and stu_gpa >=0) 
); 

create table tutor(
tutor_id number(4) constraint tutor_id_pk primary key, 
tut_fn varchar2 (20), 
tut_ln varchar2 (2), 
major_id number(4) constraint tutor_major_id_fk references course(major_id), 
mon_avail time, 
tues_avail time, 
wed_avail time, 
thurs_avail time, 
fri_avail time 
); 

create table schedule(
schedule_id number(4) constraint schedule_id primary key, 
tut_id number(4) constraint tut_id_fk references tutor(tutor_id), 
stu_id number(4) constraint stu_id_fk references student(stu_id), 
day_resv varchar(2) constraint day_resv_c1 check(day_resv=upper(day_resv)) 
        constraint day_resv_c2 check (day_resv in ('MO', 'TU', 'WE', 'TH', 'FR')), 
time_resv time 
); 

答えて

2

Oracleは、TIMEデータ型を持っていません。 DATE型には、日付(年、月、日)と時刻(時、分、整数秒)のフィールドがあります。精度が必要な場合は、TIMESTAMPを使用して、分数秒を測定できます。あなたの目的のために、DATEはおそらくあなたが望むものです。 Manual reference here

ベストofluck。

+0

うわー私は彼らが時間のデータ型を持っていないことに驚いています!!私は日付を使用して試してみると、それは動作します。あなたの応答に感謝します。 – Fitz

0

OracleはTIMEデータ型を持っていないので、時間にはSMALLINTフィールドを使用し、分(深夜以降)値として格納することを検討することをお勧めします。

これは困難であることの表示のためにHH:MMにフォーマットすると、迅速かつ簡単に比較を最大限に活用し、このページには、それに役立つはず:あなたは数ではなく、日付に変換されますConvert minutes to HH24:MI format

注意 - 時には、@ bobsの正しい答えを見てください。

+0

ああ、ありがとうございました。 – Fitz

0

別のオプションはINTERVAL DAY TO SECONDデータ型である可能性があります。名前が意味するように、それは日、時、分、秒、分数秒を格納し、 "整数分"よりも扱いが簡単かもしれません。