sql中的时间处理

sql中的时间处理,sql,oracle,Sql,Oracle,我正在创建一个数据库,学生可以使用它来检查导师的可用性,并安排与他们的约会。我将在本例之外执行GUI和触发器 我的问题是我有一个表,Tutor,其中包括Tutor信息以及它们可用的时间。当我在表创建期间声明数据类型time时,它不会将其识别为有效的数据类型 我想将每个导师每天的可用时间存储在计划表中以供以后参考(函数将检查导师当天是否可用,在此期间允许更新计划表)。此外,每个导师只能工作一定的小时数。这些问题不是重点,但可能与给定的数据类型冲突,并给出我使用时间的原因 我正在使用pl/sql和o

我正在创建一个数据库,学生可以使用它来检查导师的可用性,并安排与他们的约会。我将在本例之外执行GUI和触发器

我的问题是我有一个表,Tutor,其中包括Tutor信息以及它们可用的时间。当我在表创建期间声明数据类型time时,它不会将其识别为有效的数据类型

我想将每个导师每天的可用时间存储在计划表中以供以后参考(函数将检查导师当天是否可用,在此期间允许更新计划表)。此外,每个导师只能工作一定的小时数。这些问题不是重点,但可能与给定的数据类型冲突,并给出我使用时间的原因

我正在使用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
 );
——删除表----
下拉表学生级联约束;
降表过程级联约束;
删除表调度级联约束;
下拉表约束;
----创建表-----
创建表格课程(
cou_id编号(4),
主要身份证号码(4),
cou_name varchar2(20),
少校名称varchar2(20),
varchar2教授(20岁),
约束过程主键(cou\u id)
);
创建表学生(
stu_id编号(4)约束stu_id_pk主键,
stu_fn varchar2(20岁),
stu_ln varchar2(20岁),
stu_city varchar2(20),
stu_Ehno varchar2(20岁),
cou_id编号(4)约束cou_id_fk参考课程(cou_id),
stu gpa编号(3,2)约束stu gpa c1检查(stu gpa=0)
);
创建表格导师(
导师id号(4)约束导师id主键,
tut_fn varchar2(20),
tut_ln varchar2(2),
专业id编号(4)约束导师专业id fk参考课程(专业id),
周一至周五,
星期二,
我们将利用时间,
星期四,
周五有效时间
);
创建表格明细表(
计划id号(4)约束计划id主键,
tut_id编号(4)约束tut_id_fk参考导师(导师id),
学生id号(4)约束学生id参考学生(学生id),
day_resv varchar(2)约束day_resv_c1检查(day_resv=上限(day_resv))
约束日重新检查(日重新检查('MO','TU','WE','TH','FR')),
时间
);

Oracle没有时间数据类型。日期类型包含日期(年、月、日)和时间(小时、分钟、整数秒)字段。如果您需要更高的精度,可以使用时间戳,允许测量分数秒。就你而言,约会可能就是你想要的


幸运的是。

Oracle没有时间数据类型。日期类型包含日期(年、月、日)和时间(小时、分钟、整数秒)字段。如果您需要更高的精度,可以使用时间戳,允许测量分数秒。就你而言,约会可能就是你想要的

最好的运气。

假设(正如鲍勃贾维斯在他的回答中指出的)Oracle没有时间数据类型,你可能想考虑使用SimultIn字段作为时间,并将它们存储为分钟(午夜后)值。 这将使大多数比较变得快速和简单,仅将格式设置为

HH:MM
以便于显示更为困难,本页将对此有所帮助:

注意,你将转换一个数字,而不是一个日期时间,所以看看@ Bob的正确答案的例子。

< P>给出(如@鲍勃贾维斯在他的回答中指出的)Oracle没有时间数据类型,你可能想考虑使用SimultIn字段用于Times,并将其存储为分钟(午夜后)值。p> 这将使大多数比较变得快速和简单,仅将格式设置为
HH:MM
以便于显示更为困难,本页将对此有所帮助:


请注意,您将转换的是一个数字,而不是日期时间,因此请查看@bobs的答案以获得正确的示例。

另一个选项可能是数据类型。顾名思义,它存储天、小时、分钟、秒和分数秒,可能比“整数分钟”更容易处理。

另一个选项可能是数据类型。顾名思义,它存储天、小时、分钟、秒和分数秒,可能比“整数分钟”更容易处理。

wow我很惊讶它们没有时间数据类型!!我将尝试使用date,看看是否有效。感谢您的回复。哇,我很惊讶他们没有时间数据类型!!我将尝试使用date,看看是否有效。谢谢你的回复。