Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

Java의 Timestamp와 SQL의 Timestamp의 차이점 본문

Java/Java: 프로그래밍 코드

Java의 Timestamp와 SQL의 Timestamp의 차이점

데브마우스 2024. 3. 3. 13:43

상황 분석

Java에서 시간을 기록하고 데이터베이스로 시간을 전송하는 프로그래밍 코드를 작성중이었습니다.

 

Java에서 아래 Timestamp 코드를 실행시키니 밀리세컨트(밀리초)를 넘어서 나노세컨드(나노초)의 소수점 3자리 까지 출력되었습니다.

public class Main {
	public static void main(String[] args) {
		Timestamp timestamp = new Timestamp(System.currentTimeMillis());
		System.out.println(timestamp); //2024-03-03 13:42:17.025
	}
}

 

의문점

SQL에서 나노초의 소수점 3자리까지 들어가면 DB 용량 낭비가 아닐까?하는 생각이 들었습니다.

 

Java에서 SQL로 값을 저장한 경우: 소수점 생략

Timestamp를 활용하여 시간을 DB에 저장하였습니다. 저장 결과 값은 2024-03-03 13:42:17 처럼 소수점 3자리 없이 DB에 저장되어 있었습니다. 자동으로 형변환된다는게 신기하네요.

 

단, 주의하실 점으로 Timestamp는 2038-01-19 03:14:07까지의 값만 가질 수 있습니다.

출처: https://dev.mysql.com/doc/refman/8.0/en/datetime.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.2 The DATE, DATETIME, and TIMESTAMP Types

13.2.2 The DATE, DATETIME, and TIMESTAMP Types The DATE, DATETIME, and TIMESTAMP types are related. This section describes their characteristics, how they are similar, and how they differ. MySQL recognizes DATE, DATETIME, and TIMESTAMP values in several f

dev.mysql.com

 

SQL에서 Java로 값을 불러온 경우: 소수점과 소수점 첫번째 자리 출력

SQL에 있는 Timestamp 데이터 타입의 값을 Java의 Timestamp 데이터 타입으로 불러올 경우 2024-03-03 13:33:51.0 처럼 .0이 출력됩니다.