在一个字段中,我需要存储的不是日期时间对,即标准的Oracle日期。
01/10/2009 22:10:39
但仅限时间
22:10:39
我认为节省磁盘空间(我有200万行)或提供更快的处理。
答案 0 :(得分:15)
您可以尝试INTERVAL DAY TO SECOND数据类型,但它不会为您节省任何磁盘空间......但它非常适合此目的。
create table t1 (time_of_day interval day (0) to second(0));
insert into t1 values (TO_DSINTERVAL('0 23:59:59'));
select date '2009-05-13'+time_of_day
from t1;
11个字节。
答案 1 :(得分:6)
你最好的选择可能是将“午夜以来的秒数”存储为数字字段。
SELECT to_char( SYSDATE, 'SSSSS' ) FROM dual;
答案 2 :(得分:3)
您可以将日期中的时间提取为字符串,如下所示:
to_char(sysdate,'HH.MI.SS')
但是没有时间数据类型可以帮助您节省空间。
答案 3 :(得分:0)
你可以节省几Mb的磁盘空间(现在什么都不是),你的性能几乎没有。
您可以使用NUMBER
类型的列来存储自建议午夜以来的秒数,只是不要忘记约束。
(您可能会使用NUMBER(5, 0)
,它使用1-3个字节,具体取决于存储的值,而不是DATE
列使用的常量7个字节)
答案 4 :(得分:0)