일정 시간단위로 나누어 데이터를 가져와보자
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은 참으로 다양한 함수들이 존재하고 주요한 함수들을 알아두면 쿼리를 더욱 편히 짤 수 있다.
Comments