[解決済み] java.util.Dateとjava.sql.Dateの比較
質問
java.util.Date
対
java.sql.Date
どのような場合にどちらを使うのか、またその理由は?
どのように解決するのですか?
おめでとうございます。あなたは、私がJDBCで一番嫌いなものにぶち当たりました。日付クラスの処理です。
基本的にデータベースは通常、少なくとも
三
は、日付、時刻、タイムスタンプといった形式のフィールドです。これらはそれぞれ JDBC で対応するクラスを持っており
は、それぞれ
java.util.Date
. この3つのそれぞれのクイックセマンティクスは以下の通りです。
-
java.sql.Date
はSQL DATEに対応しており、これはつまり 年、月、日 一方 時、分、秒、ミリ秒 は無視されます。さらにsql.Date
はタイムゾーンに縛られない。 -
java.sql.Time
はSQL TIMEに対応し、当然のことながら、以下の情報のみが含まれます。 時、分、秒、ミリ秒 . -
java.sql.Timestamp
は、ナノ秒単位の正確な日付であるSQL TIMESTAMPに対応する( ただしutil.Date
はミリ秒にしか対応していません! ) の精度をカスタマイズすることができます。
この3つの型に関連してJDBCドライバを使用する際に最も多いバグの1つは、型が正しく処理されないということです。
これは、以下のことを意味します。
sql.Date
はタイムゾーンに依存します。
sql.Time
は、現在の年、月、日、などなど。
最後に どれを使うか?
フィールドのSQLタイプに依存します、本当に。
PreparedStatement
には、3つの値すべてに対するセッターがあります。
#setDate()
に対するものである。
sql.Date
,
#setTime()
について
sql.Time
と
#setTimestamp()
に対して
sql.Timestamp
.
を使用する場合は注意してください。
ps.setObject(fieldIndex, utilDateObject);
を指定すると、実際には通常の
util.Date
しかし、その後でデータを要求したときに、実際には足りないものがあることに気づくかもしれません。
本当はDatesはどれも使うべきではないと言っているのです。
私が言いたいのは、ミリ秒/ナノ秒をプレーンな長さとして保存し、使用しているオブジェクトに変換することです ( joda-timeプラグ ). 例えば、今なら 20100221 と 154536123 のように、日付成分と時間成分を別の長さで保存します。これらのマジックナンバーはSQLクエリで使用することができ、データベースから別のデータベースへポータブルになり、JDBC/Java Date APIのこの部分を完全に回避することができます。
関連
-
java.util.NoSuchElementException 原因解析と解決方法
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] java.util.Dateをjava.sql.Dateに変換する方法は?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
IllegalArgumentException この例外を解決する方法
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
HttpClientがGZIP形式でない場合の対処法
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み] java.util.Dateをjava.sql.Dateに変換する方法は?