ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] 날짜 함수를 이용하여 특정 기간 데이터 조회하기
    Data Analysis/SQL 2023. 6. 16. 19:10

    Table of Contents

    1. Introduction
    2. MySQL 날짜 함수
    3. 날짜 함수를 활용한 데이터 조회
    4. Reference

     

    Introduction

     데이터베이스에서 데이터를 조회하고 이를 분석하고자 하는 일련의 과정이 과거에 비해 자연스러워짐에 따라 기업 내부에서 SQL을 능동적으로 사용하고 있다. 과거에는 데이터 분석가에게 잘 가공된 데이터를 제공해서 분석을 수행하고 결과물을 받아왔다면, 최근에는 직접 데이터베이스에서 조회 할 수 있는 권한 만 부여 받아 데이터를 자유롭게 분석할 수 있도록 하고 있다. 이에 따라 데이터 분석가에게 요구하는 기술로 자리를 잡아가고 있다. 다만, SQL의 기본 구조는 알기 때문에 특정 데이터베이스에 위치한 테이블을 조회하는데에는 무리가 없으나 각 데이터베이스의 함수의 이해도가 낮아 원하는 데이터를 조회하는데 한계가 있다. 이에 따라 날짜 함수를 활용하여 특정 기간의 데이터를 조회할 수 있도록 학습이 필요하다.

    [그림 1] 게임회사 채용공고
    [그림1] 데이터 분석가 채용공고

     

    MySQL 날짜 함수

    데이터베이스의 종류에 따라 상이할 수 있으나 대동소이하다. 자주 사용하는 날짜 데이터 중 NOW(), CURDATE(), CURTIME() 함수는 현재 시간을 반환하는 함수이다. 현재 시간을 기준으로 데이터를 조회할 필요가 있는 경우에 참고해서 사용할 수 있다.

    날짜 함수 설명 예시
    CURDATE() 현재시간의 날짜만을 반환 ex) 2023-06-16
    CURTIME() 현재시간의 시간만을 반환 ex) 18:47:20
    NOW() 현재시간을 반환 ex) 2023-06-16 18:47:20

     

    또 다른 날짜 함수 중 하나인 DATE(), YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND()와 같은 함수는 날짜 데이터 중 일부 값을 숫자형 데이터로 반환하는 함수이다.

    날짜 함수 설명 예시
    DATE() 시간 데이터의 날짜만 반환 2023-06-16
    YEAR() 시간 데이터의 연도만 반환 2023
    MONTH() 시간 데이터의 월만 반환 6
    DAY() 시간 데이터의 일만 반환 16
    HOUR() 시간 데이터의 시간만 반환 18
    MINUTE() 시간 데이터의 분만 반환 47
    SECOND() 시간 데이터의 초만 반환 20

     

    다만, 특정 기간을 조회하기 위해서 DATE_ADD(), DATE_SUB() 함수를 활용하기도 한다. 해당 함수는 날짜 부분에 따라 기준일자와의 간격 만큼을 반환하는 함수이기 때문에 전년, 전월, 전일 등과 같은 특정 구간을 필터해서 데이터를 조회 할 수 있다.

    날짜 함수 설명 예시
    DATE_ADD() 기준일자 대비 지정된 값 만큼의 간격을 반환 DATE_ADD(NOW(), INTERVAL 1 DAY)=2023-06-17
    DATE_SUB() 기준일자 대비 지정된 값 만큼의 간격을 반환 DATE_SUB(NOW(), INTERVAL 1 DAY)=2023-06-15

     다만, DATE() 함수에서도 동일한 기능을 구현할 수 있다. DATE(NOW() - INTERVAL 1DAY) = 2023-06-15로 표현된다. 다만, DATE_ADD()와 DATE_SUB함수는 날짜와 시간이 모두 표시되지만, DATE()함수는 연-월-일까지만 표현된다는 차이가 있다.

     

    날짜 함수를 활용한 데이터 조회

    오늘과 어제 데이터만 가져오기 위해서 DATE()함수를 활용하여 WHERE절에 넣어주었다.

    SELECT TIME
         , USER_ID
         , COST
         , ITEM
      FROM SALES
     WHERE TIME BETWEEN DATE(NOW() - INTERVAL 1 DAY) AND DATE(NOW())

     

     

    Reference

    "Date and Time Data Types", MySQL, https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html

    "Date and Time Functions", MySQL, https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

     

    댓글

Designed by Tistory.