java.util.Date와 java.sql.Date

동호·2022년 3월 8일
1

자바를 배우면서 Date를 사용하려고 import할 때 java.util.Date와 java.sql.Date가 있었는데 그 차이를 모르고 항상 java.util.Date를 썼던 기억이 있다.

그리고 JSP와 Spring을 배우면서 DTO에 날짜 속성을 가진 객체는 편의를 위해서 String으로 사용해왔기에 정확이 두 객체의 차이를 모르고 지나쳐서 알아보려 한다.


결론부터 말하지면 가장 큰 차이점은 시분초의 유무이다.


java.util.Date

  • 1970년 1월 1일 00:00:00 GMT(Epoch Time 또는 POSIX Time) 이후의 특정 시점을 millisecond 단위로 나타낸다.

  • 클래스 내부에 UTC(협정 세계시)에 대한 정보를 가지고 있다.

  • Date는 더 이상 사용을 권고하지 않는다.

  • Java 8이 도입되면서 java.time 패키지 사용이 권고된다.

  • 현재 날짜 및 시각 정보가 EEE MMM dd HH:mm:ss zzz yyyy 패턴을 사용하여 toString() 메서드 오버라이딩되어 출력

java.util.Date
Date date = new Date();
System.out.println(date);
Tue Mar 08 08:37:44 KST 2022
Constructor
Date()
Date(long date)
Date(int year, int month, int date)
Date(int year, int month, int date, int hrs, int min)
Date(int year, int month, int date, int hrs, int min, int sec)
Date(String s)

java.sql.Date

  • 해당 클래스의 사용 목적은 년도, 월, 일을 유지하는 SQL 데이터를 다루기 위함이다.

  • 시간 정보를 다루지 않고 0으로 초기화된다.

  • java.sql.Date는 java.util.Date를 상속한다.

  • 데이터베이스를 다룰 때 사용되어야 한다.

  • 시간 정보를 유지하지 않으므로, 로컬 환경과 데이터베이스 간의 시간 변환은 JDBC 드라이버의 구현에 따라 다르다.

  • SQL TIME, SQL TIMESTAMP와 같은 SQL의 데이터 타입을 처리하기 위해 java.sql.Time 또는 Timestamp를 사용할 수 있다.

Constructor
Date(int year, int month, int day)
Date(long date)

출처:
https://yh0921k.tistory.com/23
https://stackoverflow.com/questions/2305973/java-util-date-vs-java-sql-date

profile
안녕하세요!

0개의 댓글