1

我想创建一个包含有关 moto GP 统计数据的数据库,并且我想存储最快圈数等的时间。我需要存储像分钟:秒:毫秒这样的时间......我该怎么做?

谢谢

4

4 回答 4

4

你可以使用一个TIMESTAMP类型。它以高达纳秒的精度存储时间(默认为微秒)。

请参阅Oracle 内置数据类型

选择一个虚拟的年份和日期:

select to_timestamp('00/01/01 01:02:03.123456', 
                    'YY/MM/DD HH24:MI:SS.FF') from dual;

或者你也可以使用一个INTERVAL类型:

SQL> create table foo (a interval day to second);       
Table created.
SQL> insert into foo values (to_dsinterval('0 01:02:03.123456'));
1 row created.
SQL> select * from foo;

A
---------------------------------------------------------------------------
+00 01:02:03.123456
于 2012-12-22T13:10:55.220 回答
0

使用时间戳数据类型(如果需要,您可以指定准确性)。如果要存储来自不同时区的值,请改用带时区的时间戳。

于 2012-12-22T13:37:15.450 回答
0
 1. Oracle does not store millisecond directly but it does store seconds
    with a fraction component which can help you to get the
    milliseconds.
 2. Not only millisecond rather you can get to microseconds too! In fact
    you can specify the number of digits that oracle stores in the   
    fractional part of seconds i.e. the precision part for `TIMESTAMP`  
    datatype. The default is platform dependant, on UNIX it defaults to
    6    and on windows it defaults to 3. The valid range is [0-9].

参考:DBA_BLOG

于 2012-12-22T13:13:46.097 回答
0

我根本不会使用时间戳来存储数据。如果分、秒、毫秒的信息在存储之前是可用的,我宁愿创建一个单独的表,其中包含三个数字字段来保存信息;原因,还有一个代理键:-)

于 2017-09-06T13:17:56.617 回答