Datetime 칼럼으로 특정 기간의 데이터를 조회하려면 어떻게 해야할까?
예를 들어,2020-07-12 부터 2020-07-13까지의 회원가입한 유저의 목록을 추출한다고 가정하자.
SELECT *
FROM USERS
WHERE CREATED_AT BETWEEN '2020-07-12' AND '2020-07-13'
;
자연스럽게 위와 같이 작성하게 된다.
하지만 결과값은 12일의 유저만 조회하게 된다.
왜일까?
Datetime type 칼럼의 경우, 이름에서 미루어 짐작할 수 있듯이 date + time 의 조합이다.
그런 만큼 time 을 명시하지 않을 경우, 00:00:00 이 디폴트 값으로 설정된다.
그렇다면 방금 전 쿼리는 다음과 같다.
select *
from users u
WHERE created_at BETWEEN '2020-07-12 00:00:00' and "2020-07-13 00:00:00"
;
따라서 우리가 원하는 12, 13 일의 데이터를 모두 조회하기 위해서는 마지막 날의 time을 23:59:59
으로 명시하여야 한다.
BETWEEN A AND B 의 연산은 A 이상 B이하 이지만
Datetime 의 미설정시 default 값이 00:00:00 으로 자동 설정되어 생기는 문제였다.
select *
from users u
WHERE created_at BETWEEN '2020-07-12 00:00:00' and "2020-07-13 23:59:59"
;
'SQL' 카테고리의 다른 글
프로그래머스 SQL Lv.5 상품을 구매한 회원 비율 구하기 (0) | 2024.01.26 |
---|---|
sql 관련 기본 개념 (0) | 2022.12.09 |
퍼널 분석 문제 풀이 회고 (0) | 2022.11.23 |
ERD(Entity Relationship diagram) 읽는법 (0) | 2022.11.13 |
댓글