Java 날짜 - java.sql.Timestamp 클래스
Timestamp 클래스
java.sql.Timestamp
는 SQL의 TIMESTAMP
타입에 대응하기 위해 만들어 졌다. Timestamp
클래스로 날짜, 시간과 관련한 데이터의 조작을 행하는 경우에 이용한다.
Timestamp
를 java.util.Date
클래스를 상속 받은 서브 클래스이다.
Timestamp 이해
Timestamp
의 생성자는 밀리초의 시간 값을 지정한다.
System
클래스의 currentTimeMillis()
메소드를 사용하면, 밀리세컨드로 표현되는 현재 시간을 돌려주므로, 이것을 사용해 보자.
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis());
System.out.println(currentTimestamp);
실행 결과:
2022-12-12 08:03:15.759
Timestamp <-> String 변환
Timestamp를 String으로 변환
Timestamp
를 String
으로 변환하려면, 날짜와 시간 형식으로 익숙한 SimpleDateFormat
클래스를 사용한다.
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis());
// Timestamp to String
String currentTimestampToString = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(currentTimestamp);
System.out.println(currentTimestampToString);
실행 결과:
2022/12/12 08:03:15
Timestamp가 2022/12/12 08:03:15
와 같은 String
으로 변환되었다.
String을 Timestamp로 변환
이번에는 반대로 String
에서 Timestamp
로 변환해 보겠다.
우선은 Strin
g에서 java.util.Date
클래스로 변환해야 한다. 변환된 Date
클래스에서 getTime()
로 밀리세컨드를 변환해서 이 값을 Timestamp
생성자에 넣으면 변환이 된다.
String currentTimestampToString = "2022/12/12 08:03:15";
// String to Timestamp
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
dateFormat.setLenient(false);// 날짜와 시간을 엄격하게 확인
try {
Date stringToDate = dateFormat.parse(currentTimestampToString);
Timestamp stringToTimestamp = new Timestamp(stringToDate.getTime());
System.out.println(stringToTimestamp);
} catch (ParseException e) {
e.printStackTrace();
}
실행 결과:
2022-12-12 08:03:15.0
이렇게 생성된 Timestamp 를 데이터베이스에 저장하는데 사용할 수 있게 된다.
변환 전체 코드
위에서 작성한 코드에 전체는 아래와 같다.
package com.devkuma.basic.datetime;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimestampConverter {
public static void main(String[] args) {
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis());
System.out.println(currentTimestamp);
// Timestamp to String
String currentTimestampToString = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(currentTimestamp);
System.out.println(currentTimestampToString);
// String to Timestamp
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
dateFormat.setLenient(false);// 날짜와 시간을 엄격하게 확인
try {
Date stringToDate = dateFormat.parse(currentTimestampToString);
Timestamp stringToTimestamp = new Timestamp(stringToDate.getTime());
System.out.println(stringToTimestamp);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Timestamp 대신에 LocalDateTime
Java 8에서는 Date
, Calendar
클래스의 대체로서, Instant
, LocalDateTime
, ZonedDateTime
이 도입되었다.
그 중에서도 LocalDateTime
은 “타임 존 없음의 일시"로 불변의 일자/시간 객체 객체로 데이터베이스와의 관련할 수 있다.