การแสดงเวลา 12 ชั่วโมงพร้อม am/pm ตัวเล็ก
ฟังก์ชัน DATE_FORMAT() กับ format %l:%i %p แสดงเวลา 12 ชั่วโมงพร้อม AM/PM ตัวใหญ่ ใช้ LOWER() ห่อหุ้มเพื่อแปลงเป็นตัวเล็ก
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มเวลา:
mysql> CREATE TABLE formatTime (
-> LoginTime TIME
-> );
Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO formatTime VALUES('12:40:34'),('14:10:58'),('16:56:40'),('10:12:14');
Query OK, 4 rows affected (0.12 sec)
ข้อมูลดิบ (24 ชั่วโมง):
mysql> SELECT * FROM formatTime;
+-----------+
| LoginTime |
+-----------+
| 12:40:34 |
| 14:10:58 |
| 16:56:40 |
| 10:12:14 |
+-----------+
4 rows in set (0.00 sec)
จัดรูปแบบ 12 ชั่วโมง am/pm ตัวเล็ก:
mysql> SELECT LOWER(DATE_FORMAT(LoginTime, '%l:%i %p')) FROM formatTime;
+------------------------------------------+
| LOWER(DATE_FORMAT(LoginTime,'%l:%i %p')) |
+------------------------------------------+
| 12:40 pm |
| 2:10 pm |
| 4:56 pm |
| 10:12 am |
+------------------------------------------+
4 rows in set (0.04 sec)
คำอธิบาย Format Specifiers
| Code | ความหมาย | ตัวอย่าง |
|---|---|---|
| %l | ชั่วโมง 1-12 (ไม่มี leading zero) | 12, 2, 4, 10 |
| %h | ชั่วโมง 01-12 (มี leading zero) | 12, 02, 04, 10 |
| %i | นาที 00-59 | 40, 10, 56, 12 |
| %p | AM/PM ตัวใหญ่ | PM, PM, PM, AM |
ทางเลือกอื่น
-- ใช้ DATE_FORMAT พร้อม format ตัวเล็กโดยตรง (MySQL ไม่มี specifier ตัวเล็ก)
-- ต้องใช้ LOWER() หรือ CONVERT ... USING utf8mb4 COLLATE utf8mb4_bin (ซับซ้อน)
-- แสดงวินาทีด้วย
SELECT LOWER(DATE_FORMAT(LoginTime, '%l:%i:%s %p')) FROM formatTime;
-- 12:40:34 pm, 2:10:58 pm, 4:56:40 pm, 10:12:14 am
หมายเหตุ: %l (L เล็ก) ไม่มี leading zero, %h (h เล็ก) มี leading zero เลือกตามความชอบ