본문 바로가기
Study Hard/개발 /로직 생각

varchar2(8) 타입으로 저장된 날짜를 나타내는 문자열을 어떻게 가져오면 좋을까?

by 코플+ 2023. 7. 5.
날짜의 정보가 담긴 문자열 ex) 20230101 8자리 문자열을
사용자에게는 다른형식으로 보여주고 싶을때 어떻게 처리할 것인가?

방법은 3가지 이다.
1. Client 단 - DB에서 그대로 가져와 js로 형식을 변환시켜준다.
2. Controller나 Service단 - Servlet 내에서 java로 값의 형식을 처리 한후 객체 전달.
3. DB에서 slect 시에 sql문으로 변환하여 출력

 

 

 

모든 날짜를 date로 저장할 수있지만 시간이 존재하지 않는 날자는 숫자 8자리 형식으로 저장하는 것이 DB에서는 가장 효율적이다.

 

20230101 같은 문자열로 값을 DB에서 바로 받아오는 것에 대한

단점이 하나 있다면 date로 받아오는 형식은 java나 jsp(jstl) 에서 값 형식을 변환해주는게 편리하지만

 

일반적인 문자열은 날짜 형식변환 library를 사용하기 어렵다는 것이다.

 

그래서 생각한게 가장 깔끔한 것은 DB단에서 부터 불러올때 date형식으로 변환해서 

library를 통해서 변환하는것도 있지만 vo(dto)의 형식을 date로 변경해야하는 점이 생긴다.

 

정리해보면

 

1. Client 단 (js로 변경)

- js 변경하게되면 코드가 길어진다는 단점이 있지만 서버 리소스를 잡아먹지 않는다는 장점이 있다.

 

2. tomcat jsp 서버단

- date형식은 문자형식을 편하게 변경해주는 라이브러리가 많지만 문자열은 하드코딩해야 한다는 단점이 있따.

 

3. DB 단

- db에서 애초에 문자열 형식을 변경해준다면 select 시간이 아주조금 늘어나겠지만 spring단이나 클라이언트단에서 별도 설정없이 갈 수 있다는거다.

 

그래서 db slect절에 다음과 같이 형식을 다음과같이 변환해서 조회한다.

 

TO_CHAR(TO_DATE(컬럼명, 'YYYYMMDD'), 'YYYY/MM/DD')

문자열 형식을 변환하는 방법이 있겠지만 문자열 -> date로 변경했다가 to_char()를 사용해서 원하는 포맷으로 바꿔준다.

 

 

 

댓글