Để hiển thị cột kiểu TIME chỉ gồm giờ:phút (HH:MM) mà bỏ giây, bạn dùng hàm TIME_FORMAT() với định dạng '%H:%i'.
Cú pháp
SELECT TIME_FORMAT(ten_cot_time, '%H:%i') AS ten_moi FROM ten_bang;
Các ký hiệu định dạng thời gian
| Ký hiệu | Ý nghĩa | Ví dụ |
|---|---|---|
%H | Giờ 24h (00-23) | 14 |
%h | Giờ 12h (01-12) | 02 |
%i | Phút (00-59) | 30 |
%s | Giây (00-59) | 45 |
%p | AM/PM | PM |
%T | HH:MM:SS (24h) | 14:30:45 |
%r | hh:mm:ss AM/PM (12h) | 02:30:45 PM |
Ví dụ minh họa
1. Tạo bảng
CREATE TABLE removeSecondsFromTime (
Id INT NOT NULL AUTO_INCREMENT,
StartTime TIME,
EndTime TIME,
PRIMARY KEY(Id)
);
2. Chèn dữ liệu
INSERT INTO removeSecondsFromTime(StartTime, EndTime) VALUES
('10:20:45', '11:21:40'),
('12:30:55', '13:20:21'),
('14:40:57', '15:55:02');
3. Xem dữ liệu gốc (có giây)
SELECT * FROM removeSecondsFromTime;
Kết quả:
+----+-----------+----------+
| Id | StartTime | EndTime |
+----+-----------+----------+
| 1 | 10:20:45 | 11:21:40 |
| 2 | 12:30:55 | 13:20:21 |
| 3 | 14:40:57 | 15:55:02 |
+----+-----------+----------+
4. Loại bỏ giây, chỉ giữ giờ:phút
SELECT
TIME_FORMAT(StartTime, '%H:%i') AS StartingTime,
TIME_FORMAT(EndTime, '%H:%i') AS EndingTime
FROM removeSecondsFromTime;
Kết quả:
+--------------+------------+
| StartingTime | EndingTime |
+--------------+------------+
| 10:20 | 11:21 |
| 12:30 | 13:20 |
| 14:40 | 15:55 |
+--------------+------------+
Các cách khác
Cách 1: CAST sang TIME(0) - MySQL 8.0+ (lưu trữ không có giây)
-- Chỉ hiển thị
SELECT CAST(StartTime AS TIME(0)) FROM bang;
-- Cập nhật dữ liệu (bỏ giây vĩnh viễn)
UPDATE bang SET StartTime = CAST(StartTime AS TIME(0));
Cách 2: SUBSTRING (cách cũ, không khuyến khích)
SELECT SUBSTRING(StartTime, 1, 5) FROM bang; -- '10:20'
Cách 3: DATE_FORMAT (cũng dùng cho DATETIME)
SELECT DATE_FORMAT(ten_cot_datetime, '%H:%i') FROM bang;
Lưu ý
TIME_FORMAT()trả vềVARCHAR(chuỗi), không phải kiểuTIME- Nếu cần tính toán sau đó, hãy giữ nguyên cột
TIMEgốc, chỉ format khi SELECT - MySQL 8.0.19+ hỗ trợ
TIME(0),TIME(3)(precision) để lưu không giây/mili-giây - Để parse ngược:
STR_TO_DATE('10:20', '%H:%i')