2009-03-11 11 views
0

私はOracle 9を使用していますが、システムはOracle 8と10でも動作します。Oracleにミリ秒を格納する最も良い方法は何ですか?

問題は次のとおりです。日付フィールドには何も保存できませんが、ミリ秒精度。明らかな解決策は、ミリ秒を格納する新しい列を作成することです。しかしこれはより良い解決策ですか?

これは、私のすべてのクエリ(たくさんのものがある)がORDER BY句に変更を必要とするため、これは非常に賢明ではないようです。

+1

私は、Oracle 8が10歳であると考えています。 – tuinstoel

答えて

2

は、Oracle 8であなたの周り(varchar型のフィールドまたは二つのフィールド、日時とミリ秒を保持する第二)あなたが何らかの形でのOracle 8でこれを行うための要件を避けることができる場合

を仕事をしなければならなかった、考えますTIMESTAMPデータ型。

0

私は、あなたがOracle8(すぐにサービスを停止する予定で、まだ稼働中でない場合)とミリ秒のサポートをサポートするかどうかをお選びいただくことをお勧めします。 2つのうち、オラクル8を廃止し、オラクル9以降のみをサポートすることをお勧めします。

[公正な開示:私は競争相手のために働いています。私は私たちに切り替えることをお勧めします。私のオラクル8のサポート情報が間違っていると、申し訳ありません。しかし、助言は私が作ることのできるように無慈悲です。]

+0

Oracle 8(および8iおよび9iR1)は、YEARSのサポートを終了しました。 Oracle 9iR2は最近「生涯サポート」カテゴリに入りました。これは基本的に新しいバグ修正を意味しません。 –

+0

ありがとう!私はそう思っていましたが、情報を検索するのが面倒すぎました(また、Oracleのサイトを覗かないように勧められています)。したがって、Oracle 8を無視するアドバイスは合理的です。したがって、TIMESTAMPを使用してください。間違いなく、彼らは8つのシステムを持っています(またはなぜそれに言及しますか)。しかし、彼らは借りている時間に生きています。 –

0

すでに述べたように、timestampは、探しているミリ秒の精度をサポートするOracle 9以降のデータ型です。 Oracle 8をサポートしたい場合は、値を格納するためにvarchar2(25)を使用する必要があります。 oracle8では、java関数または外部プログラムを使用して、ミリ秒単位の精度を表のvarchar2列に格納する必要があります。

0

おそらくこのスレッドに出くわすには遅すぎます。ただし、タイムスタンプがサポートされていない旧バージョンのOracleの場合。 Timestampの値は、Longデータ型の列に格納できます。 DBに格納する際、timestamp.getTime()をjavaに保存することができます。これはlongを返します。また、DBからの読み取り中に、Long値を読み取り、タイムスタンプコンストラクターでタイムスタンプを作成することで、タイムスタンプを作成できます。これは、レガシーシステムで作業している人に役立ちます。

関連する問題