[MariaDB] 오늘 날짜 데이터 조회하기 | DATE, BETWEEN, 범위 조건 비교

2026. 9. 22. 14:28·개발지식/DB
반응형

개발하다 보면 REG_DT 같은 날짜 컬럼을 기준으로
오늘 등록된 데이터만 조회해야 하는 경우가 있다.

 

처음에는 DATE()를 사용하는 방법이 가장 간단해 보이는데
BETWEEN이나 >=, <를 이용해서 날짜 범위를 직접 지정하는 방법도 있다.

세 가지 방법이 어떤 차이가 있는지 간단하게 정리해봤다.


테스트 테이블 만들기

먼저 테스트용 테이블을 하나 만들었다.

CREATE TABLE USER_HISTORY (
    HISTORY_ID INT NOT NULL AUTO_INCREMENT,
    USER_NM VARCHAR(100) NOT NULL,
    REG_DT DATETIME NOT NULL,
    PRIMARY KEY (HISTORY_ID)
);
 

날짜 조건을 확인하기 위해
전날, 오늘, 다음 날 데이터를 각각 넣어준다.

INSERT INTO USER_HISTORY (
    USER_NM,
    REG_DT
)
VALUES
('전날 데이터', CURDATE() - INTERVAL 1 SECOND),
('오늘 오전 데이터', CURDATE() + INTERVAL 9 HOUR),
('오늘 마지막 데이터', CURDATE() + INTERVAL 1 DAY - INTERVAL 1 SECOND),
('내일 데이터', CURDATE() + INTERVAL 1 DAY);
 

조회해보면 대략 아래와 같은 데이터가 들어간다.

USER_HISTORY 테스트 데이터 조회


1. DATE()를 이용한 오늘 날짜 조회

가장 간단한 방법은 DATE()를 사용하는 것이다.

SELECT *
FROM USER_HISTORY
WHERE DATE(REG_DT) = CURDATE();
 

REG_DT가

2026-09-22 09:00:00
 

이라면

DATE(REG_DT)
 

결과는

2026-09-22
 

처럼 날짜 부분만 가져온다.

CURDATE()도 현재 날짜를 반환하기 때문에
두 값을 비교해서 오늘 데이터를 조회할 수 있다.

코드가 짧아서 처음 봤을 때 가장 이해하기 쉬운 방법이다.

오늘 오전 데이터 / 오늘 마지막 데이터


2. BETWEEN으로 오늘 날짜 조회

날짜 범위를 조회할 때 BETWEEN도 사용할 수 있다.

예를 들어 아래처럼 작성할 수 있다.

SELECT *
FROM USER_HISTORY
WHERE REG_DT BETWEEN CURDATE()
AND CURDATE() + INTERVAL 1 DAY;
 

처음 보면

오늘 00시부터 내일 00시까지

조회하니까 오늘 데이터만 나올 것 같아 보인다.

그런데 BETWEEN은 시작값과 끝값을 모두 포함한다.

즉 실제 조건은

오늘 00:00:00 이상
내일 00:00:00 이하
 

가 된다.

따라서 정확히 내일 00:00:00에 등록된 데이터도 같이 조회된다.

우리 테스트 데이터에서는 내일 데이터까지 결과에 포함된다.

BETWEEN 조회 결과

BETWEEN은 끝값도 포함하기 때문에 다음 날 00:00:00 데이터까지 조회된다.

BETWEEN 끝값을 23:59:59로 하면 되지 않을까?

아래처럼 작성할 수도 있다.

 
SELECT *
FROM USER_HISTORY
WHERE REG_DT BETWEEN CURDATE()
AND CURDATE() + INTERVAL 1 DAY - INTERVAL 1 SECOND;
 

이 경우

오늘 00:00:00
~
오늘 23:59:59
 

까지 조회된다.

일반적인 DATETIME이라면 사용할 수 있지만,
컬럼이 소수점 이하 시간까지 저장한다면 조금 애매해질 수 있다.

예를 들어

23:59:59.500000
 

같은 값이 저장될 수 있다면 23:59:59보다 큰 값이기 때문에 조회에서 빠질 수 있다.

그래서 날짜 범위를 조회할 때는 종료 시간을 직접 맞추기보다
다음 날 00시 미만으로 조회하는 방법이 더 깔끔하다.


3. >= / < 범위 조건으로 조회

내가 가장 자주 사용하는 방법이다.

SELECT *
FROM USER_HISTORY
WHERE REG_DT >= CURDATE()
AND REG_DT < CURDATE() + INTERVAL 1 DAY;
 

조건을 풀어서 보면

오늘 00:00:00 이상
내일 00:00:00 미만
 

이다.

여기서 중요한 건 < 를 사용한다는 점이다.

내일 00:00:00은 포함되지 않기 때문에
정확하게 오늘 데이터만 조회할 수 있다.

또한 23:59:59 같은 종료 시간을 직접 계산할 필요도 없다.

범위 조건 조회 결과


세 가지 방법 비교

정리하면 아래와 같다.

방법 조건 특징
DATE() DATE(REG_DT) = CURDATE() 가장 간단하고 직관적
BETWEEN BETWEEN 오늘 AND 내일 끝값까지 포함하므로 주의
>= / < >= 오늘 AND < 내일 날짜 범위를 명확하게 표현 가능

개인적으로 오늘 날짜 데이터를 조회할 때는

REG_DT >= CURDATE()
AND REG_DT < CURDATE() + INTERVAL 1 DAY
 

방식을 사용하는 편이 가장 깔끔한 것 같다.

DATE() 방식도 간단하게 사용할 수 있지만,
컬럼에 함수를 적용하는 형태라는 점은 알아두면 좋다.

MariaDB 버전이나 인덱스 구성에 따라 실행 계획은 달라질 수 있기 때문에
성능이 중요한 쿼리라면 EXPLAIN으로 직접 확인하는 게 가장 정확하다.


정리

오늘 날짜 데이터를 조회하는 방법은 여러 가지가 있다.

가장 간단하게는

DATE(REG_DT) = CURDATE()
 

를 사용할 수 있다.

BETWEEN도 범위 조회에 사용할 수 있지만
양쪽 끝값을 모두 포함한다는 점을 주의해야 한다.

그래서 오늘 하루를 정확하게 표현하려면

REG_DT >= CURDATE()
AND REG_DT < CURDATE() + INTERVAL 1 DAY
 

처럼

오늘 00시 이상 ~ 내일 00시 미만

조건으로 작성하는 방법이 편하다.

반응형

'개발지식 > DB' 카테고리의 다른 글

[DBeaver] localhost에서 MariaDB 데이터베이스 생성하기  (0) 2026.09.21
[MariaDB] Windows에 MariaDB Server 설치하기  (0) 2026.09.20
[데이터베이스/DB] JOIN이란? (종류, 정리)  (0) 2023.09.07
[데이터베이스/DB] SELECT문의 실행 순서  (0) 2023.09.06
[데이터베이스/DB] DDL, DML, DCL, TCL이란? (의의, 종류)  (0) 2023.09.03
'개발지식/DB' 카테고리의 다른 글
  • [DBeaver] localhost에서 MariaDB 데이터베이스 생성하기
  • [MariaDB] Windows에 MariaDB Server 설치하기
  • [데이터베이스/DB] JOIN이란? (종류, 정리)
  • [데이터베이스/DB] SELECT문의 실행 순서
견코
견코
개발로 코딩하기 프로젝트
  • 견코
    개발로 코딩하기
    견코
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 앱개발
      • 개발지식 N
        • Java N
        • Spring
        • Vue
        • CS
        • DB N
        • Next.js
      • 잡동사니
        • 개요
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    문자열체크
    빈문자열
    MariaDB날짜조회
    데이터베이스
    isEmptyisBlank차이
    MariaDBServer
    자바
    MariaDB연결
    공백체크
    DBeaverMariaDB
    localhost
    CURDATE
    로컬db
    mariaDB
    오늘날짜조회
    java
    디비버
    doubleint변환
    날짜조건
    dbeaver
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
견코
[MariaDB] 오늘 날짜 데이터 조회하기 | DATE, BETWEEN, 범위 조건 비교
상단으로

티스토리툴바