본문 바로가기
MySql

MySQL UTC에서 IST로 변환하는 mysql

by 베이스 공부 2020. 11. 22.
반응형

UTC 타임 스탬프에 레코드를 저장하는 데이터베이스가 있습니다. 현지 시간 표준 (IST)으로 가져오고 싶습니다.

일부 추천을 참조하여 이렇게 시도했습니다.

select date(convert_tz(sa.created_at,'+00:00','+05:30')) as date,count(*) as hits from session_acts sa, sessions s where sa.session_id = s.id and s.created_at between convert_tz('2015-03-12T11:33:00+00:00','+00:00','-05:30') and convert_tz('2015-03-13T11:33:00+00:00','+00:00','-05:30') group by date;

그러나 결과적으로

+------------+------+
| date       | hits |
+------------+------+
| 2015-03-12 |   94 |
| 2015-03-13 |   34 |
+------------+------+

13 일에 요청 된 조회 만 표시하고 싶습니다. 내가 어디로 잘못 가고 있는지.?

 

해결 방법

 

IST는 UTC보다 5.30 시간 빠르므로 IST에서 13 일이 시작되면 2015-03-13 : 00:00:00 해당 2015-03-12 18:30:00 UTC

mysql> select convert_tz('2015-03-13T00:00:00+00:00','+00:00','+05:30') ;
+-----------------------------------------------------------+
| convert_tz('2015-03-13T00:00:00+00:00','+00:00','+05:30') |
+-----------------------------------------------------------+
| 2015-03-12 18:30:00                                       |
+-----------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

그리고 13이 IST로 끝날 때, 즉 2015-03-13 : 23 : 59 : 59 UTC로 2015-03-13 18:29:59

mysql> select convert_tz('2015-03-13T23:59:59+00:00','+00:00','+05:30') ;
+-----------------------------------------------------------+
| convert_tz('2015-03-13T23:59:59+00:00','+00:00','+05:30') |
+-----------------------------------------------------------+
| 2015-03-13 18:29:59                                       |
+-----------------------------------------------------------+

따라서 13 일 동안 IST에서 데이터를 얻으려면이 날짜 범위 내에서 데이터를 검색해야합니다.

따라서 조건은 다음과 같습니다.

s.created_at 
between convert_tz('2015-03-13T00:00:00+00:00','+00:00','+05:30')
and convert_tz('2015-03-13T23:59:59+00:00','+00:00','+05:30');

선택시 변환을 수행하므로 모든 13 번째 데이터를 반환합니다.

 

참조 페이지 https://stackoverflow.com/questions/29163349

 

 

반응형

댓글