【Java】日付と時刻の扱い方:java.util.Date vs java.sql.Date
java.util.Date vs java.sql.Date の違い
機能
- java.util.Date は、日付と時刻 を両方とも表すことができます。ミリ秒までの精度を持ち、タイムゾーンも考慮できます。
- java.sql.Date は、日付のみ を表すクラスです。時刻情報は含まれません。
互換性
- java.util.Date は、JDBC と互換性があります。JDBC は、Java プログラムからデータベースにアクセスするための標準的な API です。
- java.sql.Date は、SQL と互換性があります。SQL は、データベースを操作するための言語です。
使用例
- java.util.Date は、カレンダーやタイムスタンプなど、日付と時刻を両方とも扱う必要がある場合に使用されます。
- java.sql.Date は、データベースの日付型カラムとやり取りする場合に使用されます。
非推奨
- java.util.Date は、Java 8 から非推奨になりました。代わりに
java.time.LocalDate
やjava.time.LocalDateTime
などの新しい API を使うことを推奨されています。 - java.sql.Date は、非推奨ではありませんが、新しい API の方が使いやすいため、新しいコードではあまり使われません。
項目 | java.util.Date | java.sql.Date |
---|---|---|
機能 | 日付と時刻 | 日付のみ |
互換性 | JDBC | SQL |
使用例 | カレンダー、タイムスタンプ | データベースの日付型カラム |
非推奨 | Java 8 から | 非推奨ではない |
- 日付と時刻を両方とも扱う必要がある場合は
java.util.Date
を使用します。 - データベースの日付型カラムとやり取りする場合は
java.sql.Date
を使用します。 - 新しいコードでは、
java.util.Date
ではなくjava.time
パッケージの新しい API を使うことを推奨します。
// java.util.Date のサンプルコード
import java.util.Date;
public class JavaUtilDateExample {
public static void main(String[] args) {
// 現在の日付と時刻を取得
Date date = new Date();
// 日付と時刻を出力
System.out.println(date);
// 日付のみを取得
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
// 日付を出力
System.out.println(sqlDate);
}
}
// java.sql.Date のサンプルコード
import java.sql.Date;
public class JavaSqlDateExample {
public static void main(String[] args) {
// 2024年3月29日の日付を作成
java.sql.Date date = java.sql.Date.valueOf("2024-03-29");
// 日付を出力
System.out.println(date);
}
}
- 上記のコードは、
java.util.Date
とjava.sql.Date
の使い方を示しています。 java.util.Date
の例では、現在の日付と時刻を取得し、日付と時刻、日付のみを出力しています。java.sql.Date
の例では、2024年3月29日の日付を作成し、出力しています。
実行結果
// java.util.Date の実行結果
Tue Mar 29 15:54:22 PDT 2024
2024-03-29
// java.sql.Date の実行結果
2024-03-29
java.util.Date と java.sql.Date を扱う他の方法
java.time パッケージ
Java 8 以降では、java.time
パッケージに新しい日付と時刻 API が導入されました。この API は、従来の API よりも使いやすく、多くの機能が追加されています。
例
// java.time.LocalDate の例
import java.time.LocalDate;
public class JavaTimeLocalDateExample {
public static void main(String[] args) {
// 2024年3月29日の日付を作成
LocalDate date = LocalDate.of(2024, 3, 29);
// 日付を出力
System.out.println(date);
}
}
2024-03-29
Joda-Time は、Java の日付と時刻を扱うオープンソースライブラリです。java.util.Date
よりも使いやすく、多くの機能が追加されています。
// Joda-Time の例
import org.joda.time.LocalDate;
public class JodaTimeExample {
public static void main(String[] args) {
// 2024年3月29日の日付を作成
LocalDate date = LocalDate.of(2024, 3, 29);
// 日付を出力
System.out.println(date);
}
}
2024-03-29
その他のライブラリ
- ThreeTen Backport
- Hijri Calendar
java.util.Date
と java.sql.Date
を扱う方法はいくつかあります。それぞれの方法にはメリットとデメリットがあり、状況に応じて使い分ける必要があります。
- その他のライブラリも、ニーズに合わせて検討することができます。
java sql datetime