소개
연, 월, 년만 나타내는 날짜 저장 생일과 같은 요일은 시간대를 처리하는 데 어려움을 겪습니다. 이 기사에서는 최신 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;
데이터베이스 고려 사항
이점
예
다음 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!