티스토리 뷰

반응형

해외와 한국에서 동시적으로 서비스를 제공해야하므로 시간 데이터는 UTC기준으로 처리합니다.

 

UTC 사전적 정의를 볼까요?

 

협정 세계시(協定世界時, 프랑스어: Temps Universel Coordonné, 영어: Coordinated Universal Time) 또는 UTC(협정 세계표준시)는 1972년 1월 1일부터 시행된 국제 표준시이다. UTC는 국제원자시와 윤초 보정을 기반으로 표준화되었다.

UTC는 그리니치 평균시(GMT)에 기반하므로 GMT로도 불리기도 하는데, UTC와 GMT는 초의 소숫점 단위에서만 차이가 나기 때문에 일상에서는 혼용된다. 기술적인 표기에서는 UTC가 사용된다.

 

출처: <https://ko.wikipedia.org/wiki/%ED%98%91%EC%A0%95_%EC%84%B8%EA%B3%84%EC%8B%9C>

 

UTC 사용하여 시스템에 구현하는 이유는 DB UTC-0 기준으로 저장해두어야

클라이언트의 시간기준으로 +9 해서 사용할 있습니다.

 

예를 들면,

한국(UTC+9)에서 '2021-03-13 00:00' 시각에 글을 작성했다고 하죠.

동일 시각에 베트남(UTC+7) '2021-03-12 22:00'이니간 글작성시간을 22시로 보여야 하는거죠! 

 

이렇게 로직을 처리하기 위해 DB 시간 데이터를 UTC-0 기준 '2021-03-12 15:00' 으로 저장하면 한국에서는 '2021-03-13 00:00',베트남에서는 '2021-03-12 22:00' 처리해서 표기할수 있는거죠!

 

 

참고로

.NET에서는  System.DateTime.UtcNow 사용할수 있고,

System.DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") 구문으로 포맷을 맞춰 사용하기도 하죠.

 

MSSQL에서는 DATAADD 함수를 통해 UTC+9 한국시간 기준으로 가져올수 있습니다.

 

응용해서 보면 CONVERT 함수와 DATEADD 함수를 사용해서 포맷을 정해 출력할 있어요!

  CONVERT(VARCHAR(10), DATEADD(HOUR, 9, RECEIVED_DATE), 121)  -- 날짜만 출력

  CONVERT(VARCHAR(8), DATEADD(HOUR, 9, RECEIVED_DATE), 108) -- 시간만 출력

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함