본문 바로가기

교육

mariadb에서 datetime 유형의 0시 이후 조회 예제

반응형

1. 가장 권장되는 방식 (인덱스 활용 가능)

 
SELECT * FROM your_table WHERE CREATION_DATE >= CURDATE();

설명

  • CURDATE() : 오늘 날짜의 00:00:00 시각을 의미
  • DATETIME 컬럼과 직접 비교하므로 인덱스 사용 가능
  • 성능 및 가독성 측면에서 가장 권장

 

2. 명시적으로 0시를 표현하는 방식

 
SELECT * FROM your_table WHERE CREATION_DATE >= CONCAT(CURDATE(), ' 00:00:00');

또는

 
SELECT * FROM your_table WHERE CREATION_DATE >= TIMESTAMP(CURDATE());

 

3. BETWEEN 사용 예제 (오늘 하루만)

 
SELECT * FROM your_table WHERE CREATION_DATE BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY);

주의

  • BETWEEN은 양 끝값을 모두 포함
  • 23:59:59 대신 다음 날 0시를 사용하는 것이 안전

 

4. ❌ 비권장 방식 (인덱스 미사용 가능성)

 
SELECT * FROM your_table WHERE DATE(CREATION_DATE) = CURDATE();

문제점

  • CREATION_DATE에 함수 적용 → 인덱스 사용 불가
  • 데이터가 많을 경우 성능 저하

 

정리 (실무 권장)


 

오늘 0시 이후 전체 CREATION_DATE >= CURDATE()
오늘 하루만 CREATION_DATE >= CURDATE() AND CREATION_DATE < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
인덱스 고려 함수 미사용 비교 방식

 

반응형