java.sql.Date 클래스는 JDBC에서 날짜 값을 표현할 때 사용되는 클래스입니다. 이 객체를 생성하는 방법은 크게 두 가지가 있는데, 하나는 생성자(Constructor)를 사용하는 방법이고, 다른 하나는 valueOf() 메서드를 사용하는 방법입니다.
1. 생성자(Constructor) 사용하기
java.sql.Date의 생성자는 원하는 날짜를 나타내는 long 타입의 값(밀리초 단위 에포크 시간)을 인자로 받아 해당 날짜의 Date 객체를 생성합니다.
Date(long date)
일반적으로 문자열 형태의 날짜를 SimpleDateFormat으로 파싱한 후, 그 결과의 밀리초 값을 이용해 객체를 생성합니다.
예제 코드
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Demo {
public static void main(String args[]) throws ParseException {
String str = "26-09-1989";
SimpleDateFormat obj = new SimpleDateFormat("dd-MM-yyyy");
long epoch = obj.parse(str).getTime();
System.out.println("Date value: " + epoch);
// java.util.Date 객체 생성
java.util.Date date = new java.util.Date(epoch);
System.out.println(date);
}
}
실행 결과
Date value: 622751400000 Tue Sep 26 00:00:00 IST 1989
2. valueOf() 메서드 사용하기
valueOf() 메서드는 두 가지 오버로딩된 형태로 제공됩니다.
valueOf(LocalDate date)valueOf(String s)
이 메서드는 LocalDate 객체 또는 yyyy-[m]m-[d]d 형식의 날짜 문자열을 인자로 받아, 해당 날짜에 대응하는 java.sql.Date 객체를 생성하여 반환합니다.
LocalDate 객체를 사용하는 예제
import java.sql.Date;
import java.time.LocalDate;
public class Demo {
public static void main(String args[]) {
LocalDate localDate = LocalDate.of(2014, 9, 11);
Date date = Date.valueOf(localDate);
System.out.println(date);
}
}
실행 결과
2014-09-11
문자열을 사용하는 예제
import java.sql.Date;
public class Demo {
public static void main(String args[]) {
String str = "2017-12-03";
Date date = Date.valueOf(str);
System.out.println("Date Value: " + date);
}
}
실행 결과
Date Value: 2017-12-03
정리
JDBC 작업 시 날짜 데이터를 다루려면 java.sql.Date 객체가 필요합니다. 기존의 밀리초 값이 있다면 생성자를 활용하고, Java 8 이상의 날짜 API(LocalDate)나 표준 형식의 문자열이 있다면 valueOf() 메서드를 사용하는 것이 가장 간편하고 권장되는 방법입니다.