개발메모

PostgreSQL에서 time zone 변경하여 날짜 조회 하는 방법

theno0s 2023. 12. 12. 09:17

회사에서 PostgreSQL를 사용 중이다. 

db defualt time zone을 UTC로 설정을 했다보니, 한국시간으로 변환이 매번 필요 했다.

현재 2가지 API로 DB connection을 사용하는데, MyBatis와 JPA이다.

 

1. Mybatis

   - current_date나 current_timestamp등으로 조회할 때,

SELECT current_time at time zone 'Asia/Seoul' from my_table;

     current_date에 'at time zone'을 붙여서 하게 되면, UTC로 조회되는 날짜에 단순 9시간만을 더해서 조회를 하기 때문에 원하는 날짜가 정확하게 나오지 않았다. 그래서 시간까지 조회하는 current_timestamp로 날짜+시간을 가져온 다음 'at time zone' 함수로 원하는 시간대를 가져오게 했다. 날짜만 필요할 경우에는

SELECT (current_time at time zone 'Asia/Seoul')::date from my_table;

    ::date로 데이터 타입을 변경해 주면 된다.

 

2. JPA

    - ...사실 아직 명확한 방법을 찾지는 못했다. LocalDateTime으로 조회 해와서 +9시간 더해주는 방식으로 사용 중인데, 좋은 방법같지는 않다. 좀 더 찾아봐야 할듯..

 

 

 

DB에서 시간대를 설정하는건 개인적으로 기본 설정값을 애초에 원하는 시간대로 맞추는것이 좋다고 생각한다. 다만 글로벌하게 사용해야하고, 서비스가 지역마다 시간이 다르다고 할 경우에는 거기에 맞춰서 조회시점에 변경하는 것이 좋겠지만...아직 그 정도 서비스를 해보지는 않아서 잘 모르겠다.

 

어쨌든 하나 하나 매번 가시밭 길인 건 여전하다.