Java 날짜 - java.sql.Timestamp 클래스

자바의 Timestamp에 설명, Timestamp를 String으로 변환, String을 Timestamp로 변환

Timestamp 클래스

java.sql.Timestamp는 SQL의 TIMESTAMP 타입에 대응하기 위해 만들어 졌다. Timestamp 클래스로 날짜, 시간과 관련한 데이터의 조작을 행하는 경우에 이용한다.
Timestampjava.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으로 변환

TimestampString으로 변환하려면, 날짜와 시간 형식으로 익숙한 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로 변환해 보겠다.

우선은 String에서 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은 “타임 존 없음의 일시"로 불변의 일자/시간 객체 객체로 데이터베이스와의 관련할 수 있다.




최종 수정 : 2022-12-12