Java와 DB 간 날짜 포맷 관리 방법

Java와 주요 데이터베이스(Oracle, MySQL, PostgreSQL, MSSQL)를 연동할 때 날짜 포맷을 일관되게 유지하는 것이 중요합니다. 각 데이터베이스는 사용하는 날짜 포맷이 다르므로, 이를 일관되게 처리하기 위해 DateUtil 클래스를 작성하여 문자열과 java.util.Date 객체 간의 변환을 쉽게 수행할 수 있습니다.


1. Oracle의 DateUtil 클래스

Oracle에서 자주 사용하는 날짜 포맷은 dd-MMM-yy hh.mm.ss.SSS a입니다. 이를 바탕으로 Oracle에서 사용할 수 있는 DateUtil 클래스를 작성했습니다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
private static final String ORACLE_DATE_FORMAT = "dd-MMM-yy hh.mm.ss.SSS a";

public static Date stringToDate(String dateStr) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(ORACLE_DATE_FORMAT);
return formatter.parse(dateStr);
}

public static String dateToString(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat(ORACLE_DATE_FORMAT);
return formatter.format(date);
}

public static String getCurrentDateTime() {
SimpleDateFormat formatter = new SimpleDateFormat(ORACLE_DATE_FORMAT);
return formatter.format(new Date());
}
}

사용 예시

Date date = DateUtil.stringToDate("04-Nov-24 03.30.45.000 PM");
String dateStr = DateUtil.dateToString(new Date());
String currentDateTime = DateUtil.getCurrentDateTime();

2. MySQL의 DateUtil 클래스

MySQL에서는 ISO 형식인 yyyy-MM-dd HH:mm:ss 날짜 포맷을 주로 사용합니다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
private static final String MYSQL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

public static Date stringToDate(String dateStr) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(MYSQL_DATE_FORMAT);
return formatter.parse(dateStr);
}

public static String dateToString(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat(MYSQL_DATE_FORMAT);
return formatter.format(date);
}

public static String getCurrentDateTime() {
SimpleDateFormat formatter = new SimpleDateFormat(MYSQL_DATE_FORMAT);
return formatter.format(new Date());
}
}

사용 예시

Date date = DateUtil.stringToDate("2024-11-04 15:30:45");
String dateStr = DateUtil.dateToString(new Date());
String currentDateTime = DateUtil.getCurrentDateTime();

3. PostgreSQL의 DateUtil 클래스

PostgreSQL에서도 MySQL과 동일하게 yyyy-MM-dd HH:mm:ss 포맷을 주로 사용합니다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
private static final String POSTGRESQL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

public static Date stringToDate(String dateStr) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(POSTGRESQL_DATE_FORMAT);
return formatter.parse(dateStr);
}

public static String dateToString(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat(POSTGRESQL_DATE_FORMAT);
return formatter.format(date);
}

public static String getCurrentDateTime() {
SimpleDateFormat formatter = new SimpleDateFormat(POSTGRESQL_DATE_FORMAT);
return formatter.format(new Date());
}
}

사용 예시

Date date = DateUtil.stringToDate("2024-11-04 15:30:45");
String dateStr = DateUtil.dateToString(new Date());
String currentDateTime = DateUtil.getCurrentDateTime();

4. MSSQL의 DateUtil 클래스

MSSQL에서도 ISO 형식인 yyyy-MM-dd HH:mm:ss를 사용하므로, 동일한 방식으로 DateUtil 클래스를 구성할 수 있습니다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
private static final String MSSQL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

public static Date stringToDate(String dateStr) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(MSSQL_DATE_FORMAT);
return formatter.parse(dateStr);
}

public static String dateToString(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat(MSSQL_DATE_FORMAT);
return formatter.format(date);
}

public static String getCurrentDateTime() {
SimpleDateFormat formatter = new SimpleDateFormat(MSSQL_DATE_FORMAT);
return formatter.format(new Date());
}
}

사용 예시

Date date = DateUtil.stringToDate("2024-11-04 15:30:45");
String dateStr = DateUtil.dateToString(new Date());
String currentDateTime = DateUtil.getCurrentDateTime();

결론

Java와 주요 데이터베이스를 함께 사용할 때 날짜 형식을 일관되게 유지하는 것은 매우 중요합니다. DateUtil 클래스를 활용하면 각 데이터베이스에 맞는 날짜 포맷을 쉽게 관리할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다. Oracle, MySQL, PostgreSQL, MSSQL 각각에 맞춘 DateUtil 클래스를 통해 손쉽게 날짜 변환 작업을 수행해보세요.

위로 스크롤