Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 타임스탬프가 현재 시간대에 속하는 레코드 조회하기

MySQL에서 저장된 타임스탬프 값이 현재 시간(현재 시각)과 같은 시간대에 속하는지 확인하고 싶다면 CURTIME() 함수를 활용하면 됩니다. 이 함수는 현재 시각을 반환하며, HOUR() 함수와 함께 사용하면 시(hour) 단위로 비교할 수 있습니다.

예제 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
-> (
-> ArrivalTime timestamp
-> );
Query OK, 0 rows affected (0.65 sec)

샘플 데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('2019-10-26 17:55:55');
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable values('2019-10-26 18:00:00');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('2019-10-26 18:55:00');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2018-10-26 16:00:10');
Query OK, 1 row affected (0.20 sec)

저장된 전체 레코드 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+---------------------+
| ArrivalTime |
+---------------------+
| 2019-10-26 17:55:55 |
| 2019-10-26 18:00:00 |
| 2019-10-26 18:55:00 |
| 2018-10-26 16:00:10 |
+---------------------+
4 rows in set (0.00 sec)

현재 시각 확인하기

CURTIME() 함수를 호출하여 현재 시각을 먼저 확인해 보겠습니다.

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 18:43:55 |
+-----------+
1 row in set (0.00 sec)

현재 시각은 18:43:55, 즉 18시입니다.

타임스탬프가 현재 시간대에 속하는 레코드 조회

이제 HOUR() 함수를 사용하여 ArrivalTime 컬럼의 시(hour) 값이 CURTIME()의 시 값과 일치하는 레코드만 조회하는 쿼리를 작성해 보겠습니다.

mysql> select *from DemoTable where hour(ArrivalTime)=hour(curtime());

위 쿼리는 다음과 같은 결과를 출력합니다.

+---------------------+
| ArrivalTime |
+---------------------+
| 2019-10-26 18:00:00 |
| 2019-10-26 18:55:00 |
+---------------------+
2 rows in set (0.00 sec)

결과를 보면 시(hour)가 18인 두 개의 레코드만 반환된 것을 확인할 수 있습니다. 연도나 날짜는 비교 대상에서 제외되며, 오직 시간대(시 단위)만 기준으로 필터링됩니다.

핵심 정리

  • CURTIME(): 현재 시각을 'HH:MM:SS' 형식으로 반환합니다.
  • HOUR(): 주어진 시간 값에서 시(hour) 부분만 추출합니다.
  • 두 함수를 조합하면 날짜와 무관하게 현재 시간대에 해당하는 레코드를 손쉽게 조회할 수 있습니다.