ホームページ >Java >&#&チュートリアル >Java の `java.time` API と MySQL の `DATE` 型は、時刻やタイムゾーン情報のない日付をどのように処理できますか?

Java の `java.time` API と MySQL の `DATE` 型は、時刻やタイムゾーン情報のない日付をどのように処理できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 14:33:11428ブラウズ

How Can Java's `java.time` API and MySQL's `DATE` Type Handle Dates Without Time or Timezone Information?

Java/MySQL での時間またはタイムゾーンのない日付

はじめに

年、月、誕生日などの日は、タイムゾーンの処理に関して課題を引き起こします。この記事では、最新の Java API を使用して、この問題に対する洗練された解決策を検討します。

課題

従来の Java 日時表現 (例: java.util.Date) には次のものがあります。時間とタイムゾーンの両方のコンポーネント。特定の時刻やタイムゾーンを持たない抽象日付を保存すると、タイムゾーンが異なるさまざまな環境間で一貫性を維持することに懸念が生じます。

解決策: java.time

Java SE 8 java.time API が導入されました。これは、日付と時刻の計算を処理するための堅牢かつ効率的な方法を提供します。 LocalDate は、この API のキー クラスであり、時間やタイムゾーンの情報を含まない日付を表します。

例:

LocalDate birthday = LocalDate.of(1990, 1, 1);

このコードは、日付に関係なく、1990 年 1 月 1 日の誕生日を表します。マシンのタイムゾーン。

へのマッピングMySQL

LocalDate は、次に示すように、ANSI SQL 型 DATE にマップされます。

ALTER TABLE persons ADD COLUMN birthday DATE;

データベースに関する考慮事項

  • MySQL データベースは内部的に DATE 値を UTC で保存しますが、DATE 値はクライアントのタイムゾーンで表示されます。
  • JDBC ドライバーは、データベースの対話中に UTC とローカル タイムゾーンの間で必要な変換を処理します。

利点

  • 保証異なるタイムゾーン間でも一貫した日付表現。
  • 必要性を排除します。複雑なタイムゾーンの計算や文字列操作に使用します。
  • データベース スキーマの設計とデータ取得操作を簡素化します。

次の Java コードを考えてみましょう。 MySQL に生年月日を保存するデータベース:

// Store a birthday in UTC:
String query = "INSERT INTO persons (birthday) VALUES (?)";
PreparedStatement statement = connection.prepareStatement(query);
statement.setObject(1, birthday);

// Retrieve birth date from database in UTC:
String query = "SELECT birthday FROM persons WHERE id = ?";
PreparedStatement statement = connection.prepareStatement(query);
statement.setInt(1, personId);
ResultSet resultSet = statement.executeQuery();
LocalDate birthday = resultSet.getObject("birthday", LocalDate.class);

このコードは、誕生日が時刻やタイムゾーンの情報なしで純粋な日付値として保存および取得されることを保証します。

以上がJava の `java.time` API と MySQL の `DATE` 型は、時刻やタイムゾーン情報のない日付をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。