본문 바로가기
IT, Software/DataBase

Hive SQL - unix_timestamp, from_unixtime 활용하기

by 기타마을이장 2022. 8. 3.

 

이번에 새롭게 구축한 하둡 에코시스템 내 Hive를 활용해서 이런저런 쿼리 및 데이터 분석을 해보려고 한다.

그러면서 조금씩 학습한 내용을 기록해준다(맨날 까먹고 구글링하는게 힘들어서ㅠ)

 

 

Hive SQL - String을 Datetime로 변환, 두개의 Datetime사이 초수 구하기

회사에서의 업무가 PM업무이다 보니 실제로 직접 코딩을 하거나 DB를 쿼리 할 일이 갈수록 줄어든다ㅠㅜ 하지만 가끔은 직접 무언가를 하는 게 빠를 때가 있다. 스스로에게도 자극도 되는 것 같

fidelislee.tistory.com

바로 전에 진행했던 String형식의 Datetime 사이의 초수를 구하는 쿼리문 작성에서 주로 사용했던 함수들을

좀 더 연습해보기로 했다.

 

unix_timestamp 함수

함수명만 봐도 대충 멀 하는 목적인지 알 수 있는 그런 함수ㅎㅎㅎ

String형태의 Datetime 데이터를 timstamp값으로 변환해주는 함수다.

뒤에 붙여주는 format은 Datetime 데이터의 형태를 명시해주면 된다.

  • unix_timestamp(string date[, string format])  >  주어진 값을 unixtime 으로 변환

 

format에 입력하면 어떻게 값이 달라지는지 보려고 이것저것 실습해봤다.

결론은 월을 명시하는 'MM' 을 'mm' 으로 표시하면 결과가 달라진다였다.

앞으론 그냥 왠만하면 특별한 일이 없는 한 'yyyyMMddHHmmss' 형태로 고정해서 써야겠다ㅎㅎ

SELECT unix_timestamp('20220717160202', 'yyyyMMddHHmmss'), 
unix_timestamp('20220717160202', 'yyyyMMddhhmmss'),
unix_timestamp('20220717160202', 'yyyymmddHHmmss'),
unix_timestamp('20220717160202', 'yyyymmddhhmmss');

결과 > 1658041322, 1658041322, 1642402922, 1642402922

 

from_unixtime 함수

unix_timestamp와 같이 함수명만 봐도 뭘 하는 함수인지 알 것 같다.

timestamp 데이터를 Datetime 값으로 변환해주는 함수다.

뒤의 format은 표시하고 싶은 형태로 지정해주는 용도다.

  • from_unixtime(bigint unixtime[, string format]) unixtime을 일자로 변환

 

format에 따른 결과를 살펴보려고 실습해본다. 그리고 마지막에 'a' 를 붙여주면 오전/오후를 함께 출력할 수 있다.

unix_timestamp 실습 때와 비슷하게 월을 표시하는 방식을 다르게 하니 결과가 원하지 않는 결과였다.

앞으론 월을 표시할 때는 무조건 'MM'으로 고정해야겠다.

시를 표시하는 방식은 'HH' 는 24시간 표시방식으로, 'hh' 는 12시간 표시방식으로 표시된다.

고로 'hh' 로 표시한다면 마지막에 'a'를 붙여줘서 오전/오후 구분을 해줘야 할 것 같다ㅎㅎ

SELECT from_unixtime(unix_timestamp('20220717160202', 'yyyyMMddHHmmss'),"yyyy-MM-dd HH:mm:ss a"),
from_unixtime(unix_timestamp('20220717160202', 'yyyyMMddhhmmss'),"yyyy-MM-dd hh:mm:ss a"),
from_unixtime(unix_timestamp('20220717160202', 'yyyyMMddHHmmss'),"yyyy-mm-dd HH:mm:ss a"),
from_unixtime(unix_timestamp('20220717160202', 'yyyyMMddhhmmss'),"yyyy-mm-dd hh:mm:ss a");

결과 > 2022-07-17 16:02:02 오후
2022-07-17 04:02:02 오후
2022-02-17 16:02:02 오후
2022-02-17 04:02:02 오후
select from_unixtime(unix_timestamp('20220717040202', 'yyyyMMddHHmmss'),"yyyy-MM-dd HH:mm:ss a"),
from_unixtime(unix_timestamp('20220717040202', 'yyyyMMddhhmmss'),"yyyy-MM-dd hh:mm:ss a"),
from_unixtime(unix_timestamp('20220717040202', 'yyyyMMddHHmmss'),"yyyy-mm-dd HH:mm:ss a"),
from_unixtime(unix_timestamp('20220717040202', 'yyyyMMddhhmmss'),"yyyy-mm-dd hh:mm:ss a");

결과 > 2022-07-17 04:02:02 오전
2022-07-17 04:02:02 오전
2022-02-17 04:02:02 오전
2022-02-17 04:02:02 오전

 

[참조사이트] 빅데이터 - 하둡, 하이브로 시작하기 https://wikidocs.net/25258

 

반응형

댓글