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

MySQL에서 초 단위 값을 가장 가까운 반 분(30초) 단위로 올림 처리하는 방법

초(second) 단위 데이터를 가장 가까운 반 분(0.5분, 즉 30초) 단위로 반올림하려면 MySQL의 CEILING() 함수를 활용하면 됩니다. CEILING()은 소수점 이하 값을 무조건 올림 처리하는 함수로, 이를 나눗셈과 조합하면 초 단위 값을 원하는 분 단위로 손쉽게 변환할 수 있습니다.

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

mysql> create table DemoTable (secondValue int);
Query OK, 0 rows affected (0.64 sec)

예제

INSERT 문을 사용하여 테이블에 샘플 데이터를 입력합니다.

mysql> insert into DemoTable values(27);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(56);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(118);
Query OK, 1 row affected (0.20 sec)

SELECT 문으로 테이블에 저장된 전체 레코드를 확인합니다.

mysql> select *from DemoTable;

출력 결과

+-------------+
| secondValue |
+-------------+
| 27          |
| 56          |
| 118         |
+-------------+
3 rows in set (0.00 sec)

초를 반 분 단위로 반올림하는 쿼리

아래는 초 값을 가장 가까운 반 분(0.5분) 단위로 올림 처리하는 쿼리입니다. CEILING(초 값 / 30)으로 30초 구간을 기준으로 값을 올린 뒤, 다시 2로 나누어 분 단위로 변환하는 방식입니다.

mysql> select secondValue, CEILING(secondValue / 30) / 2 AS ApproxMinutes from DemoTable;

출력 결과

+-------------+---------------+
| secondValue | ApproxMinutes |
+-------------+---------------+
| 27          | 0.5000        |
| 56          | 1.0000        |
| 118         | 2.0000        |
+-------------+---------------+
3 rows in set (0.00 sec)

결과 해석

  • 27초 → 0.5분 : 30초가 지나지 않았지만 반 분 구간으로 올림됩니다.
  • 56초 → 1.0분 : 30초를 초과했으므로 1분 구간으로 올림됩니다.
  • 118초 → 2.0분 : 90초를 초과했으므로 2분 구간으로 올림됩니다.

이처럼 CEILING() 함수와 간단한 산술 연산만으로도 초 단위 데이터를 반 분 단위로 깔끔하게 변환할 수 있습니다. 로그 분석, 통계 집계 등 시간 데이터를 특정 구간별로 묶어야 하는 경우에 유용하게 활용할 수 있습니다.