MySQL에서 '1h 15 min'과 같은 시간 형식의 문자열을 분 단위 숫자(예: 75)로 변환하려면 str_to_date() 함수를 활용할 수 있습니다. 이 글에서는 실제 예제를 통해 변환 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable ( stringDate varchar(100) ); Query OK, 0 rows affected (0.86 sec)
2. 데이터 삽입
insert 명령을 사용하여 시간 문자열 데이터를 몇 개 삽입합니다.
mysql> insert into DemoTable values('1h 15 min');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values('2h 30 min');
Query OK, 1 row affected (0.21 sec)
3. 데이터 조회
select 문으로 저장된 전체 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+------------+ | stringDate | +------------+ | 1h 15 min | | 2h 30 min | +------------+ 2 rows in set (0.00 se
4. 문자열을 분 단위 숫자로 변환하는 쿼리
다음은 '1h 15 min'과 같은 문자열을 75, 즉 75분이라는 숫자 값으로 변환하는 쿼리입니다.
mysql> select time_to_sec(str_to_date(stringDate, '%l h %i min')) / 60 second from DemoTable having second is not null union all select time_to_sec(str_to_date(stringDate, '%i min')) / 60 second from DemoTable having second is not null;
출력 결과
+----------+ | second | +----------+ | 75.0000 | | 150.0000 | +----------+ 2 rows in set, 2 warnings (0.04 sec)
쿼리 동작 원리
str_to_date() 함수는 '%l h %i min' 포맷 문자열을 기준으로 입력값을 시간 값으로 해석합니다. 여기서 %l은 시간(hour), %i는 분(minute)을 의미합니다. 이후 time_to_sec() 함수가 해당 시간을 초 단위로 변환하고, 그 결과를 60으로 나누어 최종적으로 분 단위 숫자를 얻습니다.
이 방식을 응용하면 '2h 30 min'처럼 다양한 형식의 시간 문자열도 손쉽게 150분과 같은 숫자 데이터로 변환하여 계산이나 정렬에 활용할 수 있습니다.