2012-12-11 66 views
3

我期待在一些列中只存储一个时间值,但我不确定哪些数据类型必须使用? 当前有TIMESTAMP,但是这似乎也存储了日期,如果我试图从比赛中存储记录的时间,它就没用了。Oracle SQL时间数据类型

任何想法,我四处搜索,找不到我在找什么。

谢谢您的阅读!

+0

你将如何使用这些数据,你需要将有助于提供更好的答案是什么精密的更多信息。 –

回答

6

比赛的经过时间应存储在INTERVAL DAY TO SECOND

SQL> create table runner(
    2 runner_id number primary key, 
    3 runner_name varchar2(100), 
    4 runner_time interval day to second 
    5 ); 

Table created. 

SQL> insert into runner 
    2 values(1, 'Justin', numtodsinterval(250, 'second')); 

1 row created. 

SQL> select * 
    2 from runner; 

RUNNER_ID RUNNER_NAME   RUNNER_TIME 
---------- -------------------- ------------------------------ 
     1 Justin    +00 00:04:10.000000 
+1

[间隔]的文档(http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements001.htm#sthref167),['numtodsinterval()'](http://docs.oracle。 com/cd/E11882_01/server.112/e26088/functions117.htm)和['to_dsinterval()'](http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions204.htm)以供参考。 –

+0

我将如何去改变我的表中当前列的数据类型,以允许我将INTERVAL DAY存储到第二个 – Max

+2

@Max - 表是否为空?如果是这样,您可以执行'ALTER TABLE'来修改该列的数据类型。否则,几乎可以肯定需要添加具有适当数据类型的新列,移动数据(如何操作取决于当前数据类型),删除旧列,如果需要,可以将新的柱。 –