เมื่อเก็บเวลาในรูปแบบ VARCHAR เช่น '1620' (หมายถึง 16:20) สามารถแปลงเป็นรูปแบบเวลาจริง (TIME) ได้โดยใช้ฟังก์ชัน TIME_FORMAT() ร่วมกับ CONCAT() และ SUBSTRING()
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
mysql> create table DemoTable1591 ( ArrivalTime varchar(20) ); Query OK, 0 rows affected (0.58 sec)
mysql> insert into DemoTable1591 values('1620'); Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1591 values('2345'); Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1591 values('2210'); Query OK, 1 row affected (0.12 sec)
ข้อมูลต้นฉบับ (VARCHAR):
mysql> select * from DemoTable1591;
+-------------+ | ArrivalTime | +-------------+ | 1620 | | 2345 | | 2210 | +-------------+ 3 rows in set (0.00 sec)
2. แปลงเป็นรูปแบบเวลา HH:MM
mysql> select TIME_FORMAT(CONCAT(SUBSTRING(ArrivalTime, 1,2), ':', SUBSTRING(ArrivalTime, 3,4)), '%h:%i') from DemoTable1591;
ผลลัพธ์:
+---------------------------------------------------------------------------------------------+ | TIME_FORMAT(CONCAT(SUBSTRING(ArrivalTime, 1,2), ':', SUBSTRING(ArrivalTime, 3,4)), '%h:%i') | +---------------------------------------------------------------------------------------------+ | 04:20 | | 11:45 | | 10:10 | +---------------------------------------------------------------------------------------------+ 3 rows in set (0.00 sec)
อธิบายการทำงาน
SUBSTRING(ArrivalTime, 1,2)- ดึงตัวอักษร 2 ตัวแรก (ชั่วโมง): '16', '23', '22'SUBSTRING(ArrivalTime, 3,4)- ดึงตัวอักษร ตำแหน่งที่ 3-4 (นาที): '20', '45', '10'CONCAT(..., ':', ...)- รวมสตริงเป็น '16:20', '23:45', '22:10'TIME_FORMAT(..., '%h:%i')- จัดรูปแบบเวลา 12 ชั่วโมง (%h = ชั่วโมง 01-12, %i = นาที)
รูปแบบการจัดรูปแบบเวลา (Format Specifiers)
| Specifier | ความหมาย | ตัวอย่าง |
|---|---|---|
| %H | ชั่วโมง 24 ชม. (00-23) | 16, 23, 22 |
| %h | ชั่วโมง 12 ชม. (01-12) | 04, 11, 10 |
| %i | นาที (00-59) | 20, 45, 10 |
| %s | วินาที (00-59) | 00 |
หมายเหตุ: หากต้องการรูปแบบ 24 ชั่วโมง ให้ใช้ %H:%i แทน %h:%i