Trong MySQL, bạn có thể sử dụng TIME_FORMAT()
chức năng định dạng giá trị thời gian.
Hàm này hoạt động giống như DATE_FORMAT()
, ngoại trừ việc giá trị chỉ có thể được định dạng theo giờ, phút, giây và micro giây.
Xem bảng ở cuối bài viết này để biết danh sách các mã định dạng có thể được sử dụng với chức năng này.
Cú pháp
Cú pháp như sau:
TIME_FORMAT(time,format)
Nơi time
là giá trị thời gian bạn muốn định dạng và format
là chuỗi định dạng (điều này xác định cách giá trị thời gian thực sự được định dạng).
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ để chứng minh.
SELECT TIME_FORMAT('14:35:27', '%r') AS 'Result';
Kết quả:
+-------------+ | Result | +-------------+ | 02:35:27 PM | +-------------+
Ví dụ này sử dụng %r
định dạng định dạng, định dạng thời gian là 12 giờ (hh:mm:ss sau đó là SA hoặc CH).
Ví dụ 2 - Định dạng Cụ thể hơn
Nếu việc sử dụng công cụ định dạng chung chung hơn như trong ví dụ trước là không phù hợp, thì có nhiều công cụ định dạng khác có thể giúp bạn tạo định dạng mà bạn yêu cầu.
Ví dụ:nếu bạn thích định dạng trước đó, nhưng bạn không muốn trả về số giây, bạn có thể làm như sau:
SELECT TIME_FORMAT('14:35:27', '%h:%i %p') AS 'Result';
Kết quả:
+----------+ | Result | +----------+ | 02:35 PM | +----------+
Ví dụ 3 - Thời gian 24 giờ
Ngoài ra còn có các chỉ định định dạng cho thời gian 24 giờ. Đây là cách dễ nhất để định dạng thời gian bằng cách sử dụng thời gian 24 giờ.
SELECT TIME_FORMAT('14:35:27', '%T') AS 'Result';
Kết quả:
+----------+ | Result | +----------+ | 14:35:27 | +----------+
Ví dụ 4 - Microseconds
Dưới đây là một ví dụ bao gồm phần giây phân số trong kết quả:
SELECT TIME_FORMAT('14:35:27', '%H:%i:%s.%f') AS 'Result';
Kết quả:
+-----------------+ | Result | +-----------------+ | 14:35:27.000000 | +-----------------+
Tất nhiên, chúng tôi cũng có thể bao gồm micro giây trong giá trị thời gian ban đầu:
SELECT TIME_FORMAT('14:35:27.123456', '%H:%i:%s.%f') AS 'Result';
Kết quả:
+-----------------+ | Result | +-----------------+ | 14:35:27.123456 | +-----------------+
Ví dụ 5 - Thời gian đã trôi qua
Loại dữ liệu thời gian không giới hạn trong thời gian 24 giờ. Nó cũng có thể được sử dụng để biểu thị thời gian đã trôi qua. Khi sử dụng chức năng này cho thời gian đã trôi qua, bạn nên biết cách hoạt động của các chỉ định định dạng giờ với các giá trị thời gian nằm ngoài phạm vi từ 0 đến 23.
Tài liệu MySQL nêu rõ như sau:
Nếu giá trị thời gian chứa phần giờ lớn hơn
23
,%H
và%k
các chỉ định định dạng giờ tạo ra giá trị lớn hơn phạm vi thông thường là0..23
. Các chỉ định định dạng giờ khác tạo ra mô-đun giá trị giờ12
.
Dưới đây là một ví dụ để chứng minh:
SELECT TIME_FORMAT('24:00:00', '%H %k %h %I %l') AS '24', TIME_FORMAT('48:00:00', '%H %k %h %I %l') AS '48', TIME_FORMAT('100:00:00', '%H %k %h %I %l') AS '100', TIME_FORMAT('500:00:00', '%H %k %h %I %l') AS '500';
Kết quả:
+----------------+----------------+-----------------+-----------------+ | 24 | 48 | 100 | 500 | +----------------+----------------+-----------------+-----------------+ | 24 24 12 12 12 | 48 48 12 12 12 | 100 100 04 04 4 | 500 500 08 08 8 | +----------------+----------------+-----------------+-----------------+
Định dạng chỉ định
Các thông số sau có thể được sử dụng để chỉ định định dạng trả về. Đây là một tập hợp con trong số đó có sẵn với DATE_FORMAT()
hàm số. Giá trị định dạng phải bắt đầu bằng dấu phần trăm (%
).
Specifier | Mô tả |
---|---|
%f | Microseconds (000000 .. 999999 ) |
%H | Giờ (00 .. 23 ) |
%h | Giờ (01 .. 12 ) |
%I | Giờ (01 .. 12 ) |
%i | Phút, số (00 .. 59 ) |
%k | Giờ (0 .. 23 ) |
%l | Giờ (1 .. 12 ) |
%p | AM hoặc PM |
%r | Thời gian, 12 giờ (hh:mm:ss theo sau là AM hoặc PM ) |
%S | Giây (00 .. 59 ) |
%s | Giây (00 .. 59 ) |
%T | Thời gian, 24 giờ (hh:mm:ss ) |
%% | Chữ % nhân vật |