web-dev-qa-db-ja.com

時間のみを保存する方法。日時ではありませんか?

1つのフィールドに、日付と時刻のペアではなく、つまり標準のOracle日付を格納する必要があります。

01/10/2009 22:10:39

しかし、時間のみ

22:10:39

ディスクスペースを節約するか(200万行ある)、処理が高速になると思います。

24
fvital

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バイトですが。

16
David Aldridge

あなたの最善の策は、おそらく「真夜中からの秒数」を数値フィールドとして格納することでしょう。

SELECT to_char( SYSDATE, 'SSSSS' ) FROM dual;
6
kurosch

次のように、日付から時刻を文字列として抽出できます。

to_char(sysdate,'HH.MI.SS')

ただし、スペースの節約に役立つ時間のみのデータ型はありません。

3
Andy West

あなたは使うことができます:

TO_CHAR(<DATE_COLUMN>, '<TIME_FORMAT>');

TO_CHAR(SYSDATE, 'HH24:MI:SS');

時間形式については、チェックインできます ここ

0
viduka

数Mbのディスク領域を節約し(現在では何もありません)、パフォーマンスはほとんど向上しません。

推奨されるように、真夜中からの秒数を格納するためにNUMBERタイプの列を使用できますが、制約についても忘れないでください。
DATE列で使用される定数7バイトの代わりに、格納された値に応じて1〜3バイトを使用するNUMBER(5, 0)を使用する可能性があります)

0
Marius Burz