2016-12-23 4 views
1

私のローカルセットアップでは、私は単純なH2データベースを使用しています。 「ホストされた」ソリューションには、別の(類似しているが同じではない)データベースがあります。最大日付を挿入する(データベースとは無関係)

可能な最大日付をDateTime列に挿入する必要があります。私は使用しようとしました

Instant.MAX 

しかし、これは-169104626-12-11 20:08:15.99999999の列になります。

可能な限りの日付を挿入する方法にはソリッドオプションがありますか? (データベースから独立した)

+0

Instant.MINとは何ですか? –

+1

このような瞬間の象徴的な意味は何でしょうか?無限の将来? –

+0

Javaアプリケーションに定数として保存できる '31.12.9999 23:59:59'を挿入しないのはなぜですか? –

答えて

1

最大日付

なんてありません。最大の日付を設定しようとすると、データベースに絶対に依存します。

日付/時刻処理のトピックは、SQL標準にほとんど触れられていません(残念ながら)。さまざまなデータベースの中で、日付時刻のデータ型と動作は、、広くはです。最小値と最大値は、さまざまなデータベース間で根本的に異なる場合があります。単一のデータベース内であっても、さまざまな日時データ型の最小/最大範囲が劇的に異なる可能性があります。たとえば、一部のデータベースには古い独自の日付/時刻タイプがありますが、まったく異なる動作をするより一般的な標準タイプもあります。 (& java.sqlのjava.utilの)

  • 面倒レガシータイプ
  • 現代賢く設計さjava.timeタイプ:

    のJava自体は、日付時刻型の非常に異なるセットを持っています。

これらの最小値/最大値は異なります。

最大可能日を挿入する方法はありますか?

あなたは超えることが、将来的に十分いくつかの任意の日付を選択する代わりに、NULLを避けるために、このような「未解決将来の日」としてフラグのいくつかの種類として最大値を使用しようとしている場合正当な価値はありますが、あなたが使用しようとしているデータベースの限界を超えてはなりません。 Javaコードとデータベースでこの値の定数を定義し、完全に文書化します。

フィールドの表示幅を超えてレポートを破棄するなど、あらゆる種類の混乱や問題を避けるため、4桁の年を使用することをおすすめします。何かのような9999。あるいは2666の場合は、infamy of 666のために人間の読者には目立つので、おそらく2666です。

Java、min、maxなどの単語のスタックオーバーフローの詳細は、説明を参照してください。 thisおよびthisおよびthisおよびthisおよびthisと同様である。この質問は、基本的に他の質問と重複しています。