Sử dụng hàm CEILING() để làm tròn lên.
Tạo bảng demo
mysql> create table DemoTable (secondValue int); Query OK, 0 rows affected (0.64 sec)
Chèn dữ liệu (giây)
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)
Hiển thị dữ liệu
mysql> select * from DemoTable;
Kết quả
+-------------+ | secondValue | +-------------+ | 27 | | 56 | | 118 | +-------------+ 3 rows in set (0.00 sec)
Truy vấn làm tròn giây đến nửa phút (30 giây)
mysql> select secondValue, CEILING(secondValue / 30) / 2 AS ApproxMinutes from DemoTable;
Kết quả
+-------------+---------------+ | secondValue | ApproxMinutes | +-------------+---------------+ | 27 | 0.5000 | | 56 | 1.0000 | | 118 | 2.0000 | +-------------+---------------+ 3 rows in set (0.00 sec)
Giải thích công thức:
secondValue / 30: Chuyển giây sang đơn vị "nửa phút" (27/30=0.9, 56/30=1.866, 118/30=3.933).CEILING(...): Làm tròn lên số nguyên gần nhất (1, 2, 4)./ 2: Chuyển về phút (0.5, 1.0, 2.0 phút).
Bảng đối chiếu:
| Giây | /30 | CEILING | /2 (phút) |
|---|---|---|---|
| 27 | 0.9 | 1 | 0.5 |
| 56 | 1.87 | 2 | 1.0 |
| 118 | 3.93 | 4 | 2.0 |
Biến thể: Làm tròn đến phút gần nhất: ROUND(secondValue / 60). Làm tròn xuống nửa phút: FLOOR(secondValue / 30) / 2.