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

MySQL에서 가장 최근 시간 기준으로 레코드 조회하기

MySQL에서 가장 최근 시간의 레코드 가져오기

MySQL에서 문자열로 저장된 시간 데이터 중 가장 늦은(최근) 시간을 가진 레코드를 조회하려면 ORDER BY 절과 STR_TO_DATE() 함수를 함께 사용하면 됩니다. STR_TO_DATE() 함수는 문자열 형태의 시간을 실제 시간 값으로 변환해 주기 때문에, 이를 기준으로 정렬하면 원하는 결과를 얻을 수 있습니다.

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

mysql> create table DemoTable
-> (
-> DueTime varchar(20)
-> );
Query OK, 0 rows affected (0.87 sec)

다음으로 insert 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('7:30AM');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('9:00PM');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('11:00PM');
Query OK, 1 row affected (0.13 sec)

select 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select * from DemoTable;

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

+---------+
| DueTime |
+---------+
| 7:30AM |
| 9:00PM |
| 11:00PM |
+---------+
3 rows in set (0.00 sec)

가장 최근 시간의 레코드를 조회하는 쿼리

이제 STR_TO_DATE() 함수를 활용하여 가장 최근(늦은) 시간에 해당하는 레코드 하나만 가져오는 쿼리를 살펴보겠습니다. '%h:%i%p' 형식 지정자는 '오전/오후가 포함된 12시간제 시간'을 의미하며, 이를 기준으로 내림차순 정렬한 뒤 LIMIT 1로 상위 1개 레코드만 선택합니다.

mysql> select * from DemoTable
-> order by str_to_date(DueTime, '%h:%i%p') desc limit 1;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+---------+
| DueTime |
+---------+
| 11:00PM |
+---------+
1 row in set (0.00 sec)

결과를 보면 하루 중 가장 늦은 시간인 '11:00PM' 레코드가 정상적으로 반환된 것을 확인할 수 있습니다. 이처럼 varchar 타입으로 저장된 시간 문자열도 STR_TO_DATE() 함수로 변환한 후 정렬하면 손쉽게 최근 시간 기준 조회가 가능합니다.