BackEnd/Java

[Java] java.util.Date를 java.sql.Date로 변환하기

코딩마루 2023. 1. 31. 04:03

1. getTime() 메서드

java.util.Date 객체의 getTime 메서드는 1970년 1월 1일 00시 00분 00초 UTC를 기준으로 경과 한 밀리초를 반환한다. 이 밀리초를 java.sql.Date의 생성자에 전달하게 되면 우리가 원하는 java.sql.Date 객체를 생성할 수 있다. 즉, 방법은 아래와 같다.

public static void main(String[] args) {
    java.util.Date utilDate = new java.util.Date();
    
    long milliSeconds = utilDate.getTime();
    java.sql.Date sqlDate = new java.sql.Date(milliSeconds);

    System.out.println("java.util.Date: "+utilDate); // 결과: Tue Jan 31 03:54:37 KST 2023
    System.out.println("java.sql.Date: "+sqlDate); // 결과: 2023-01-31
}

2. SimpleDateFormat 활용

SimpleDateFormat을 활용하면 java.util.Date를 통해 원하는 형태의 문자열을 만들 수 있다. 즉, 우리는 java.sql.Date의 형태에 맞는 문자열을 만들어 java.sql.Date 클래스의 정적 메서드인 valueOf 메서드를 사용하여 java.sql.Date 객체를 생성할 수 있다. 즉, valueOf 메서드는 전달받은 문자열을 통해 Date 타입으로 변환해주는 기능을 수행한다. 예시코드는 아래와 같다.

public static void main(String[] args) {
    java.util.Date utilDate = new java.util.Date();

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String formattedDate = simpleDateFormat.format(utilDate);
    java.sql.Date sqlDate = java.sql.Date.valueOf(formattedDate);

    System.out.println("java.util.Date: "+utilDate); // 결과: Tue Jan 31 04:02:14 KST 2023
    System.out.println("java.sql.Date: "+sqlDate); // 결과: 2023-01-31
}