> Java > java지도 시간 > Java의 `java.time` API와 MySQL의 `DATE` 유형이 시간이나 시간대 정보 없이 날짜를 어떻게 처리할 수 있습니까?

Java의 `java.time` API와 MySQL의 `DATE` 유형이 시간이나 시간대 정보 없이 날짜를 어떻게 처리할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-29 14:33:11
원래의
420명이 탐색했습니다.

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로 저장하지만 다음과 같은 경우에는 클라이언트의 시간대로 표시됩니다.
  • 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿