我是一个 SQL 初学者,我正在创建一个表,我怀疑我已经将我的 StartTime 和 EndTime 定义为VARCHAR2来引入一个时间,它对应于(健身房的)某些课程,创建它会更正确使用某种类型time,或使用VARCHAR2并使用INSERT INTO手动将 StartTime 和 EndTime 引入每个类?
CREATE TABLE CLASES(
OID_CL SMALLINT,
nombre VARCHAR2(20),
horaInicio VARCHAR2(10),
horaFin VARCHAR2(10),
disponibilidadClase VARCHAR2(20),
codigo VARCHAR2(6),
PRIMARY KEY(OID_CL),
FOREIGN KEY(codigo) REFERENCES REGISTRO_CLASES
);
从理论上讲,数据类型
time
比 a 更正确,varchar2
因为它可以更好地表示数据库内部的数据,并且可以让您灵活地使用一些可能很方便的工具(例如操作时间的函数,如DATEDIFF
orDATEADD
)您需要问自己的问题是“我将使用这些字段做什么?” 如果您打算使用它们来执行时间和/或日期操作(计算类持续多长时间或类之间是否存在冲突),请务必使用
time
. 如果你只是用它们来显示在屏幕上,你选择的数据类型对你来说真的很无所谓(虽然从技术上讲time
它是正确的,而且一定会有时间对你更方便) .如果您只打算使用小时、分钟、秒和/或纳秒,请使用time,毕竟,尽管差异很小,但当您有额外数据时,大规模查询总是会变慢(日期在这个案例)。
查看官方文档,您可以看到差异。对于初学者来说,时间比日期时间更精确(以纳秒为单位)。另一方面,还有 datetime2,它将正常的 datetime 扩展到以 ns 为单位的时间精度。