coldmater
21
2020-03-24 14:56:51 작성 2020-03-24 14:57:15 수정됨
5
258

글로벌 서비스를 준비중입니다. Date 는 어떤 offset 을 갖게 저장해야 할까요?


안녕하세요! 모두 Covid19 의 영향권에서 벗어나, 건강하시길 기원합니다!


다름이 아니라 이번에 저희가 글로벌 서비스를 기획하면서, datetime 은 UTC 를 활용하여 처리한다는 협의를 하였습니다. 그러나 여전히 Date 타입은 어떤 날짜를 기준으로 저장해야할지 고민중입니다.


한국(+0900)과 하와이(-1000)은 19시간 차이가 난다는 사실을 기반으로 질문드려보겠습니다. 


질문은 세가지 입니다. 

1. 한국에서 2020년 3월 23일 오전 5시에 글을 작성합니다. 그렇다면, DB에 22일로 저장되어야 할까요? 23일로 저장되어야 할까요? (DB 컬럼 타입은 Date입니다. YYYY-MM-DD) 지금 계획으로는 Date 도 Datetime 컬럼을 사용하여 UTC 시간으로 저장하려고 계획하고 있습니다. 그 예는 다음과 같습니다.


2. 다음과 같은 테이블의 형태도 고려하고 있습니다. 적절한 형태인지 살펴봐주시면 감사하겠습니다.

iddateoffsetcomment
12020-03-23+09:00"2020-03-23" 을 한국에서 저장
22020-03-23-10:00

"2020-03-23" 을 하와이에서 저장


3. Date 타입을 활용하여 다음과 같이 데이터가 저장되어있다고 할 때, 한국과 하와이에서 각각 22일부터 24일까지의 데이터를 조회한다고 할 때, 어떤식으로 조회가 되도록 설계해야 할까요?

iddate
12020-02-20
22020-02-21
32020-02-22
42020-02-23
52020-02-24


여러 직원들의 문의가 반영되어 있어서 질문들에 일관성이 없는점은 양해 부탁드립니다.

어떤 기준에 의해서 Date 타입을 정해야 하는건지 조언을 부탁드립니다.


0
0
  • 답변 5

  • 쇼니
    8
    2020-03-24 15:16:17 작성 2020-03-24 15:17:13 수정됨

    UTC 기준 ISO-8601형식을 통해 항상 절대값으로 저장하시고 시간을 뷰어에게 표시할 때 로컬 시간으로 뿌려주면 혼란에서 벗어나실 수 있을것같습니다. 

    0
  • 춤과파티
    1k
    2020-03-24 16:18:20

    System.currentTimeMillis 인가?

    현재 시간을 밀리세컨드 단위로 저장해두고

    뿌려줄때나 디비에서 조회할 때 로컬 시간기준을 입히는건 어떨지요

    결국 쇼니님 말씀이랑 같은거 같기도하고...ㅎ

    0
  • coldmater
    21
    2020-03-24 16:25:01

    @쇼니 감사합니다. 혹시 시간이 아닌 날짜(YYYY-MM-DD) 데이터만을 저장해야 하는 경우에는 어떤식으로 처리할 수 있을까요? 한국에서 저장할 때 2020-03-24일이라면 그냥 저렇게 저장하는건지, 아니면 UTC 를 계산해서 다른 나라에서는 2020-03-23 일로 표현해주어야 하나요?

    0
  • 쇼니
    8
    2020-03-26 09:41:53
    날짜 데이터만을 따로 저장해야 하는 강한 목적이 있나요? 어떤 상황에서 필요한지 고민해보았지만 떠오르는점이 저는 없었습니다. 만약 뷰어입장에서 시간이 햇갈리는것이 걱정되신다면 '몇시간 ago' 같이 상대적으로 표시하셔도 될것같습니다.
    0
  • coldmater
    21
    2020-03-27 14:30:27
    생일 정보나, 캘린더에서 "하루 종일" 이라는 일정을 생성할 때와 같은 상황이 예가 될 수 있을 듯합니다. 
    저희쪽에서는 잠정적으로는 시간이 없는 날짜 정보는 "YYYY-MM-DD" 로 소통하고, DB 에는 mysql 의 date 타입으로 저장하기로 하였습니다만, 추가적인 정보가 있으시다면 첨언 부탁드립니다. 
    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.