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

MySQL에서 '1h 15 min' 형식의 문자열을 75분으로 변환하는 쿼리 작성 방법

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분과 같은 숫자 데이터로 변환하여 계산이나 정렬에 활용할 수 있습니다.