MySQL 시간 비교

stone tiger·2025년 2월 5일

MySQL

목록 보기
6/11

MySQL에서 시간 비교하는 방법

MySQL에서 시간을 비교할 때는 TIME, DATETIME, TIMESTAMP 타입을 사용하며,
>, <, =, BETWEEN, DATEDIFF(), TIMEDIFF() 같은 연산자를 활용할 수 있어.


1. 시간 비교 (>, <, = 사용)

시간을 비교할 때는 TIME, DATETIME, TIMESTAMP 데이터 타입을 직접 비교할 수 있어.

✅ 예제 1: 특정 시간 이후/이전의 데이터 찾기

SELECT * FROM orders WHERE order_time > '2024-02-01 12:00:00';

order_time"2024-02-01 12:00:00" 이후인 데이터 조회.

SELECT * FROM events WHERE event_time < '2024-02-01 18:00:00';

event_time"2024-02-01 18:00:00" 이전인 데이터 조회.


2. 특정 시간 범위 (BETWEEN)

  • BETWEEN을 사용하면 특정 기간 내의 데이터를 조회할 수 있음.

✅ 예제 2: 특정 날짜와 시간 범위 검색

SELECT * FROM logs 
WHERE created_at BETWEEN '2024-02-01 08:00:00' AND '2024-02-01 18:00:00';

"2024-02-01 08:00:00" ~ "2024-02-01 18:00:00" 사이에 생성된 로그 조회.

📌 주의: BETWEEN양쪽 끝 포함 (>= AND <= 와 동일)


3. 날짜 차이 비교 (DATEDIFF())

  • DATEDIFF(date1, date2): 두 날짜 간의 일(day) 차이를 반환.

✅ 예제 3: 주문일과 배송일 차이 계산

SELECT order_id, DATEDIFF(delivery_date, order_date) AS days_to_deliver 
FROM orders;

order_datedelivery_date 간의 일(day) 차이 계산.


4. 시간 차이 비교 (TIMEDIFF())

  • TIMEDIFF(time1, time2): 두 시간 간의 차이를 반환.

✅ 예제 4: 출근 시간과 퇴근 시간 차이 계산

SELECT employee_id, TIMEDIFF(clock_out, clock_in) AS work_duration 
FROM attendance;

clock_in(출근 시간)과 clock_out(퇴근 시간) 간의 차이를 계산.

📌 결과 예시: '08:30:00' (8시간 30분)


5. 현재 시간과 비교 (NOW(), CURTIME())

  • NOW() → 현재 날짜와 시간 반환 (YYYY-MM-DD HH:MM:SS)
  • CURDATE() → 현재 날짜 반환 (YYYY-MM-DD)
  • CURTIME() → 현재 시간 반환 (HH:MM:SS)

✅ 예제 5: 오늘 날짜 이후의 데이터 찾기

SELECT * FROM meetings WHERE meeting_time > NOW();

meeting_time이 현재 시간 이후인 데이터 조회.

✅ 예제 6: 현재 시간과 특정 시간 비교

SELECT * FROM schedules WHERE start_time < CURTIME();

start_time이 현재 시간보다 이전인 데이터 조회.


6. 특정 시간 조건 설정 (HOUR(), MINUTE(), SECOND())

  • HOUR(datetime): 시(hour) 추출
  • MINUTE(datetime): 분(minute) 추출
  • SECOND(datetime): 초(second) 추출

✅ 예제 7: 오후(12시 이후) 일정 조회

SELECT * FROM schedules WHERE HOUR(start_time) >= 12;

start_time12:00:00 이후인 일정 조회.


7. 두 시간 간 경과된 시간이 특정 값보다 큰지 비교

✅ 예제 8: 두 시간 차이가 1시간 이상인 데이터 찾기

SELECT * FROM user_activity 
WHERE TIMEDIFF(NOW(), last_login) > '01:00:00';

✔ 마지막 로그인(last_login)이 1시간 이상 지난 사용자 조회.


📌 정리

기능함수/연산자설명
특정 시간 이후/이전 비교>, <, ='2024-02-01 12:00:00' 이후 데이터 조회
특정 시간 범위 조회BETWEEN'2024-02-01 08:00:00' ~ '2024-02-01 18:00:00' 데이터 조회
날짜 차이 계산DATEDIFF(date1, date2)두 날짜 간 일(day) 차이 계산
시간 차이 계산TIMEDIFF(time1, time2)두 시간 간 차이 계산 (HH:MM:SS)
현재 시간과 비교NOW(), CURDATE(), CURTIME()현재 날짜/시간과 비교
특정 시간 조건 검색HOUR(), MINUTE(), SECOND()특정 시, 분, 초 기준 데이터 조회

0개의 댓글