「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

Javaで日付を扱う際、java.util.Datejava.sql.Date の違いに戸惑った経験はありませんか?
特にデータベース連携時は混同しやすく、意図せぬ動作の原因にもなりがちです。

この記事では、

  • java.util.Datejava.sql.Date の違い

  • 変換方法

  • 日付の差分(差)を求める実践コード

  • 2025年時点の最新ベストプラクティス (java.time API)

まで、まとめて解説します。


📌 java.util.Dateとは?

項目内容
パッケージjava.util
用途Java全般の日付・時刻を扱うクラス
時刻情報あり(ミリ秒精度)
特徴旧API(非推奨寄り)として扱われることが多い

java.util.Date は、1970-01-01 00:00:00 UTC からのミリ秒を内部保持します。
ただし、日付操作は不便で、現在は LocalDate 等を使うのが推奨です。


📌 java.sql.Dateとは?

項目内容
パッケージjava.sql
用途JDBC(DB連携)で日付(年月日)を扱うためのクラス
時刻情報なし(00:00:00固定)
特徴DBのDATE型と対応

RDBのDATE型(年月日)の表現に特化しており、時刻は持ちません
そのため、java.util.Date と相互変換すると時刻が切り捨てられる点に注意。


🔄 相互変換方法まとめ

java.util.Datejava.sql.Date

java.sql.Datejava.util.Date

⚠️ getTime()内部のミリ秒値を共有する仕組みです。


📅 日付差分(日数差)を求めるサンプル(旧API)

TimeUnit.MILLISECONDS.toDays() でミリ秒→日に変換できます。


🎯 最新ベストプラクティス(java.time API)

Java 8以降は**LocalDateChronoUnit.DAYS.betweenが推奨**です。


📝 まとめ

項目java.util.Datejava.sql.Date推奨(最新)
主な用途Java全般DB連携アプリ開発全般
時刻ありなしクラスに応じて選択
推奨?❌ (旧API)DB用途のみ✅ java.time API

🚀 結論

  1. 業務アプリ → DB入出力にjava.sql.Date

  2. アプリ内の処理java.time (LocalDate, LocalDateTime)

  3. 日付差分は ChronoUnit.DAYS.between が最もシンプル

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x