3

データを日付ではなく時間としてdbに挿入したいと思います。使用するto_date('2012-08-31 07:39:33', 'YYYY-MM-DD HH24:MI:SS')と日付も追加されます。私が使用するto_date('09:34:00', 'HH24:MI:SS')と、どこからともなく年、月、日も追加されます:| 後で、年、月、または日を考慮せずに、時間がxとyの間にある行を取得する必要があります。それ、どうやったら出来るの?ありがとう

4

3 に答える 3

4

Daveが示すソリューションの代わりに、列にデータ型をdate使用できます。interval

create table t42(id number, t interval day to second);

insert into t42 (id, t) values(123, to_dsinterval('0 07:39:33'));
insert into t42 (id, t) values(456, to_dsinterval('0 09:34:00'));

select id
from t42
where t between to_dsinterval('0 07:00:00') and to_dsinterval('0 07:59:59');

    ID
----------
       123

フォーマットモデルがないため、間隔の表示は少し厄介ですが、必要に応じていくつかのアイデアについてこの質問を参照してください。それらをフィルタリングにのみ使用する場合、それはまったく問題にならない可能性があります。

于 2012-08-31T14:03:54.093 に答える
1

DATEタイプには常に日付コンポーネントが含まれます。

DATE1つのオプションは、日付コンポーネントを無視するようにコードを使用して記述し続けることです。時間効率の良いクエリを作成するには、のような関数ベースのインデックスを作成し、TO_CHAR( date_field, 'HH24:MI:SS' )その式をクエリで使用することをお勧めします。

または、NUMBERフィールドを使用して深夜からの秒数を格納し、それに関してクエリを作成することもできます。

于 2012-08-31T12:28:08.727 に答える
0

数値列タイプを使用して、次のように値を挿入できます

INSERT INTO table_name (nTime) 
   VALUES (date - trunc(date));

次に値を選択します

select * 
  from table_name t
 where t.nTime between (10 / 24 + 15 / 24 / 60) and (12 / 24 + 30 / 24 / 60) --between 10:15 and 12:30
于 2012-08-31T14:36:09.147 に答える