1

データベースと一意の ID のスペースを節約できるように、Java で基本ミリ秒参照を 1970 年から 2008 年に変更できるようにしたいと考えています。

できれば Joda-Time を使用してください。

想定される Java 7 リリースの今後の jsr-310 はそれを実装します。

このリンクの離散タイムラインセクションでは、ミリ秒のカウントが1970年から2008年に変更されたと述べています

http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html


私が見ることができる他の唯一のオプションは、レコードを検索する必要があるたびに数学的に実装することです.

例えば

DateTime dt = new DateTime();  
long now = dt.getMillis();

DateTime dt2 = new DateTime(2008, 1, 1, 0, 0, 0, 0);  
long then = dt2.getMillis();

long smallerDate = now - then;

小さい日付はDBに保存されます

--編集--

だから私はJSR-310を読み違えました、そしてそれは不可能です。

スペースを節約するためのより良い方法があり、long を計算するために何千ものリクエストを処理するという頭痛の種があります。

DB をどこに移動するか分からないので、long を日付として記録したかったのです。おそらく MySQL => Oracle です。

ですから、タイムスタンプは必要ありませんでした。ただ BigInt が必要でした。

4

1 に答える 1

8

いいえ、できません。できたとしても、それは悪い考えです。データベース内のすべてのタイムスタンプは、数値の大きさに関係なく、同じスペースを使用します。(数値を文字列などではなく数値として保存していると仮定します。)

本当にこれが必要な場合は、自分で作成する必要があります。つまり、タイムスタンプをデータベースに入れる前にタイムスタンプから時間を減算し、タイムスタンプを取り戻すときにタイムスタンプに時間を追加します。しかし、これはメンテナンスの問題を求めています。(実際、データベースのネイティブ DATETIME データ型の代わりにタイムスタンプを使用すると、問題が発生します。)

于 2009-09-24T13:49:58.660 に答える