Kiểu TIME trong MySQL luôn lưu trữ đến giây (HH:MM:SS). Để hiển thị chỉ giờ:phút, sử dụng DATE_FORMAT() khi truy vấn.
Tạo bảng
mysql> CREATE TABLE DemoTable (ArrivalTime TIME);
Chèn dữ liệu
mysql> INSERT INTO DemoTable VALUES('08:20');
mysql> INSERT INTO DemoTable VALUES('05:40');
Xem dữ liệu gốc (có giây)
mysql> SELECT * FROM DemoTable;
+-------------+ | ArrivalTime | +-------------+ | 08:20:00 | | 05:40:00 | +-------------+
Định dạng chỉ HH:MM
mysql> SELECT DATE_FORMAT(ArrivalTime, '%H:%i') AS ONLY_HOUR_MINUTE FROM DemoTable;
+------------------+ | ONLY_HOUR_MINUTE | +------------------+ | 08:20 | | 05:40 | +------------------+
Specifiers của DATE_FORMAT()
| Specifier | Ý nghĩa | Ví dụ |
|---|---|---|
%H | Giờ 00-23 | 08, 14, 23 |
%h | Giờ 01-12 | 08, 02, 11 |
%i | Phút 00-59 | 20, 05, 59 |
%s | Giây 00-59 | 00, 30 |
%p | AM/PM | AM, PM |
Lưu ý quan trọng
- Dữ liệu lưu trữ vẫn đầy đủ HH:MM:SS — chỉ hiển thị bị cắt
- Để lưu thực sự chỉ HH:MM, dùng
VARCHAR(5)hoặcCHAR(5)+ kiểm tra constraint - MySQL 8.0.13+ hỗ trợ
TIME(0)để lưu độ chính xác 0 chữ số phần giây (vẫn lưu giây nhưng luôn 00)
Chuyển đổi ngược: Chuỗi 'HH:MM' → TIME
SELECT STR_TO_DATE('08:20', '%H:%i'); -- Trả về 08:20:00