일정 시간단위로 나누어 데이터를 가져와보자

RDBMS는 서비스의 필요한 여러 데이터를 읽고 쓴다. 서비스 유지에 필요한 정보의 CRUD는 당연하거니와 특정 통계적 수치를 뽑아내려할때 그 유용함이 더욱 드러나진다.

서비스를 운영할떄 admin등에서 중요 지표들의 시간별로 데이터를 쿼리를 통해 간단히 출력할 수 있어야한다.

먼저 기본 dateTime관련 sql함수들을 알아보자.

최근 1h

최근이란 현재시간 기준이다

DATE_SUB(NOW(),INTERVAL 1 hour) 는 현재시간 - 1시간을 한다는 의미이다.

고로 1시간 과거의 date이고 이것보다 큰값이라면 현재를 기준으로 봤을때 1시간내의 타임이 where 조건으로 걸린다는 이야기가된다.

즉, 아래쿼리에 해당하는 시간은 컷은 현재시간 ~ 1시간전 까지이다.

select user from data where {MY_DATE} > DATE_SUB(NOW(),INTERVAL 1 hour)

최근 1day

현재시간 ~ 하루전

select user from data where {MY_DATE} > DATE_SUB(NOW(),INTERVAL 1 day)

최근 1mon

현재시간 ~ 1달전

select user from data where {MY_DATE} > DATE_SUB(NOW(),INTERVAL 1 month)

최근 1year

현재시간 ~ 1년전

select user from data where {MY_DATE} > DATE_SUB(NOW(),INTERVAL 1 year)

yyyy-mm–dd ~ yyyy-mm-dd

yyyy-mm–dd ~ yyyy-mm-dd까지

select user from data where {MY_DATE1} between '2016-10-10' and '2016-10-13'

마치며

sql은 참으로 다양한 함수들이 존재하고 주요한 함수들을 알아두면 쿼리를 더욱 편히 짤 수 있다.